2010-04-29 12 views
8

Po pierwsze:Czy ktoś mógłby mi przedstawić szczegółowy przegląd szczegółów WSGI za kulisami a inne podejścia do interfejsu WWW w Pythonie?

  1. rozumiem co WSGI jest i jak go używać
  2. rozumiem, co "inne" metody (Apache mod-python, fcgi, et al) są i jak z nich korzystać
  3. rozumiem ich praktyczne różnice

Co nie rozumiem jest jak każdy z różnych „innych” metod pracy w porównaniu z czymś takim UWSGI, za sceny. Czy twój serwer (Nginx itp.) Kieruje żądanie do twojej aplikacji WSGI, a UWSGI tworzy nowego interpretera Pythona dla każdego kierowanego do niego żądania? Czym różni się od innych bardziej tradycyjnych/małpich metod łatek jest WSGI (poza innym, łatwiejszym interfejsem Pythona oferowanym przez WSGI)? Jakiego momentu żarowego brakuje mi?

+0

Czasami warto spojrzeć na [Szukam schemat wyjaśniający WSGI] (http://stackoverflow.com/q/1303118/95735) –

+0

@PiotrDobrogost - dziękuję! – orokusaki

Odpowiedz

8

Z wyjątkiem CGI, nowy interpreter Pythona prawie nigdy nie jest tworzony na żądanie. Czytaj:

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

ta została napisana w odniesieniu mod_pythonem ale odnosi się także do mod_wsgi i każdy WSGI gospodarzem mechanizm, który wykorzystuje procesy trwały.

czytaj również:

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

znajdziesz tam opisał 'wsgi.run_once' zmiennej opisanej. Służy do wskazania aplikacji WSGI, gdy używany jest mechanizm hostujący, który widziałby proces obsługujący tylko jedno żądanie, a następnie zakończony, tj. CGI. Dlatego napisz aplikację testową Hello world, która zrzuci środowisko WSGI i zobacz, co jest ustawione dla tego, czego używasz.

Należy również zwrócić uwagę na zmienne "wsgi.multiprocess" i "wsgi.multithread". Informują Cię, jeśli używany jest serwer wielu procesów, tak, że istnieje wiele instancji żądań obsługi aplikacji w tym samym czasie. Zmienna wsgi.multithread informuje, czy sam proces obsługuje wiele żądań w równoczesnych wątkach w tym samym procesie.

Więcej o wieloprocesowego i wielowątkowych modeli w odniesieniu do systemów Apache wbudowanych, takich jak mod_python i mod_wsgi i tryb demona mod_wsgi, patrz:

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

+0

@Graham dziękuję za odpowiedź. – orokusaki