2010-04-29 1 views
8

Erstens:Könnte mir jemand einen High-Level-technischen Überblick über WSGI-Details hinter den Kulissen im Vergleich zu anderen Webinterface-Approaches mit Python geben?

  1. Ich verstehe, was WSGI ist und wie es zu benutzen
  2. Ich verstehe, was "andere" Methoden (Apache mod-Python, fcgi, et al) sind, und wie man sie benutzt
  3. ich verstehe ihre praktischen Unterschiede

Was ich verstehe nicht ist, wie jeder der verschiedenen „andere“ Methoden, um so etwas wie uwsgi verglichen arbeiten, hinter die Szenen. Leitet Ihr Server (Nginx usw.) die Anfrage an Ihre WSGI-Anwendung weiter und erstellt UWSGI für jede Anfrage einen neuen Python-Interpreter? Wie viel anders ist von den anderen eher traditionellen/monkey-gepatchten Methoden WSGI (abgesehen von der anderen, einfacheren Python-Schnittstelle, die WSGI anbietet)? Welchen Glühbirnenmoment vermisse ich?

+0

Sie vielleicht einen Blick auf [Suche nach nehmen wollen ein Diagramm, um WSGI zu erklären] (http://stackoverflow.com/q/1303118/95735) –

+0

@PiotrDobrogost - danke! – orokusaki

Antwort

8

Mit Ausnahme von CGI wird fast nie ein neuer Python-Interpreter pro Anfrage erstellt. Lesen:

http://blog.dscpl.com.au/2009/03/python-interpreter-is-not-created-for.html

Dies wurde in Bezug auf mod_python geschrieben, sondern gilt auch für mod_wsgi und jeden WSGI-Hosting-Mechanismus, die permanenten Prozesse verwendet.

Lesen Sie auch:

http://www.python.org/dev/peps/pep-0333/#environ-variables

Dort finden Sie die 'wsgi.run_once' Variable beschrieben beschrieben. Dies wird verwendet, um einer WSGI-Anwendung anzuzeigen, wenn ein Hosting-Mechanismus verwendet wird, der sieht, dass ein Prozess nur eine Anfrage bearbeitet und dann verlassen wird, dh CGI. Schreiben Sie also eine Test-Hello-World-Anwendung, die die WSGI-Umgebung ausgibt und sieht, wofür sie eingestellt ist.

Achten Sie auch auf die Variablen 'wsgi.multiprocess' und 'wsgi.multithread'. Sie sagen Ihnen, ob ein Multiprozessserver verwendet wird, so dass mehrere Instanzen Ihrer Anwendung gleichzeitig Anfragen bearbeiten. Die Variable 'wsgi.multithread' teilt Ihnen mit, ob der Prozess selbst mehrere Anfragen in gleichzeitigen Threads im selben Prozess bearbeitet.

Weitere Informationen zu Multi-Prozess-und Multi-Thread-Modelle in Bezug auf Apache Embedded-Systemen, wie mod_python und mod_wsgi und mod_wsgi Daemon-Modus finden Sie unter:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

+0

@Graham danke für deine Antwort. – orokusaki

Verwandte Themen