Как запустить gevent в продакшене

Я использую gevent в своем приложении Python (на основе Django). Однако теперь мне интересно, как запустить его в производстве. Какой сервер мне следует использовать? Во время разработки я использую gevent.pywsgi, но готов ли он к работе? Я также слышал о gunicorn, но я видел несколько довольно плохих тестов о Это.

Примечание. Мне нужен SSL.


person Flavien    schedule 13.06.2012    source источник
comment
Два момента об этом эталоне. 1.) В тесте gunicorn используется рабочий процесс синхронизации по умолчанию, а не рабочий процесс gevent, который вы хотите использовать. 2.) Из сводки Если есть что-то, что сделало этот тест ясным, так это то, что большинство веб-серверов Python предлагают отличную производительность, и если вы чувствуете, что все работает медленно, первое, на что нужно обратить внимание, это действительно ваше собственное приложение.   -  person Mark Lavin    schedule 13.06.2012
comment
См. ответ на аналогичный вопрос (stackoverflow. com/questions/7855343/run-web-app-with-gevent/), сам автор gevent говорит, в двух словах, используйте gunicorn.   -  person akent    schedule 16.06.2012


Ответы (1)


Gunicorn действительно лучший вариант. Он быстрый, написан на чистом python (что упрощает его развертывание в размещенных службах, таких как Heroku), хорошо обслуживается и используется для большое количество веб-приложений Python.

По умолчанию Gunicorn использует синхронный рабочий класс для обслуживания запросов, но его можно легко настроить для использования gevent, просто добавив -k gevent к команде запуска.

Небольшое примечание: вы всегда должны запускать gunicorn за прокси-сервером, таким как NGINX, Varnish и т. д., так как это позволит gunicorn обрабатывать гораздо больше запросов, чем в противном случае, из-за буферизации ответов.

person rdegges    schedule 01.08.2012
comment
Я видел, что мне нужно отключить буферизацию, если я использую ее с gevent. Отменяет ли это преимущества Nginx? - person Flavien; 01.08.2012
comment
В чем смысл использования HTTP на внутреннем сервере? В отличие от FastCGI, SCGI и uwsgi, HTTP не был разработан для связи между интерфейсом и сервером, и его использование для этой цели имеет свои ограничения и проблемы. - person Alex K; 14.12.2012
comment
Я считаю, что вам не нужно беспокоиться о работе с обратным прокси-сервером, таким как nginx, при использовании Heroku, поскольку сетка маршрутизации обрабатывает это. - person dhackner; 17.01.2013
comment
@Flavien, только если вы занимаетесь потоковой передачей, например, длинным опросом, кометой и т. Д. - person twneale; 09.04.2014