Erstens:
Was ich verstehe nicht ist, wie jede der verschiedenen "anderen" Methoden im Vergleich zu etwas wie UWSGI, hinter den Kulissen funktioniert. 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?
Mit Ausnahme von CGI wird fast nie ein neuer Python-Interpreter pro Anfrage erstellt. Lesen Sie:
Dies wurde in Bezug auf mod_python geschrieben, gilt aber auch für mod_wsgi und jeden WSGI-Hosting-Mechanismus, der persistente Prozesse verwendet.
Lesen Sie auch:
Dort finden Sie die beschriebene Variable 'wsgi.run_once' 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 in demselben Prozess bearbeitet.
Weitere Informationen zu Multiprozess- und Multithread-Modellen in Bezug auf eingebettete Apache-Systeme wie mod_python und mod_wsgi sowie zum mod_wsgi-Daemon-Modus finden Sie unter: