Может ли кто-нибудь дать мне общий технический обзор деталей WSGI за кулисами по сравнению с другими подходами к веб-интерфейсу с Python? - PullRequest
8 голосов
/ 29 апреля 2010

Во-первых:

  1. Я понимаю, что такое WSGI и как его использовать
  2. Я понимаю, что такое "другие" методы (Apache mod-python, fcgi и др.) И как их использовать
  3. Я понимаю их практические различия

Что Я не понимаю - это то, как работает каждый из различных "других" методов по сравнению с чем-то вроде UWSGI, за кадром. Направляет ли ваш сервер (Nginx и т. Д.) Запрос в ваше приложение WSGI, а UWSGI создает новый интерпретатор Python для каждого перенаправленного ему запроса? Насколько сильно отличается от других более традиционных / пропатченных методов WSGI (кроме другого, более простого интерфейса Python, который предлагает WSGI)? Какой момент лампочки мне не хватает?

1 Ответ

8 голосов
/ 30 апреля 2010

За исключением CGI, новый интерпретатор Python почти никогда не создается для каждого запроса. Читайте:

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

Это было написано в отношении mod_python, но также относится к mod_wsgi и любому механизму размещения WSGI, который использует постоянные процессы.

Также читайте:

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

Там вы найдете описанную переменную 'wsgi.run_once'. Это используется для указания приложению WSGI, когда используется механизм хостинга, который будет видеть процесс, обрабатывающий только один запрос и затем завершающийся, то есть CGI. Таким образом, напишите тестовое приложение hello world, которое выдает из среды WSGI и посмотрите, для чего оно установлено для того, что вы используете.

Также обратите внимание на переменные 'wsgi.multiprocess' и 'wsgi.multithread'. Они сообщают вам, используется ли многопроцессорный сервер таким образом, что одновременно обрабатывается несколько запросов вашего приложения. Переменная 'wsgi.multithread' сообщает вам, обрабатывает ли сам процесс несколько запросов в параллельных потоках в одном и том же процессе.

Подробнее о многопроцессорных и многопоточных моделях, связанных со встроенными системами Apache, таких как mod_python и mod_wsgi и режим демона mod_wsgi, см .:

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

...