2012-06-13 85 views
18

我在我的Python應用程序(基於Django)中使用gevent。但是,我現在想知道如何在生產中運行它。我應該使用什麼服務器?在開發過程中,我使用gevent.pywsgi,但是可以生產嗎?我也聽說過gunicorn,但我已經看到一些漂亮的bad benchmarks如何在生產中運行gevent

注意:我需要SSL。

+4

關於這個基準的兩點。 1.)gunicorn測試使用默認的同步工作人員,而不是您正在使用的gevent工作人員。 2.)摘要「如果有一件事讓這個基準測試清楚了,那就是大多數Python Web服務器都能提供出色的性能,而如果您感覺速度較慢,首先要看的就是您自己的應用程序。」 –

+8

查看對類似問題的回答(http://stackoverflow.com/questions/7855343/run-web-app-with-gevent/7857201#7857201),gevent自己的作者說,簡而言之,「使用gunicorn。 「 – akent

回答

26

Gunicorn確實是最好的選擇。它的速度很快,它是用純Python編寫的(這使得易於部署在Heroku等託管服務上),並且它很好地維護並用於大量的Python Web應用程序。

默認情況下,Gunicorn使用同步工作者類來爲請求提供服務,但只需將-k gevent添加到運行命令中即可輕鬆配置它以使用gevent。

只是一個簡短的提示:你應該總是在NGINX,Varnish等代理的後面運行gunicorn,因爲這會讓gunicorn處理遠遠超出其他請求的響應緩衝。

+4

我已經看到,如果我使用gevent,我需要禁用緩衝。它取消了Nginx的好處嗎? – Flavien

+0

在後端服務器上使用HTTP有什麼意義?與FastCGI,SCGI和uwsgi不同,HTTP並不是爲前端到後端通信而設計的,爲此目的使用它有其侷限性和問題。 –

+0

我相信在路由網格處理它時,你不需要擔心在使用Heroku時使用像nginx這樣的反向代理來運行它。 – dhackner