【问题标题】:How to run gevent in production如何在生产中运行 gevent
【发布时间】:2012-06-13 14:58:26
【问题描述】:

我正在我的 Python 应用程序(基于 Django)中使用 gevent。但是,我现在想知道如何在生产中运行它。我应该使用什么服务器?在开发过程中,我使用 gevent.pywsgi,但它可以用于生产吗?我也听说过 gunicorn,但我见过一些漂亮的 bad benchmarks

注意:我需要 SSL。

【问题讨论】:

  • 关于这个基准的两点。 1.) gunicorn 测试使用默认同步工作程序,而不是您要使用的 gevent 工作程序。 2.) 从总结“如果有一点让这个基准很清楚,那就是大多数 Python Web 服务器都提供了很好的性能,如果你觉得事情很慢,那么首先要看的是你自己的应用程序。”
  • 查看类似问题的答案 (stackoverflow.com/questions/7855343/run-web-app-with-gevent/…),gevent 的作者自己说,简而言之,“使用 gunicorn。”

标签: python gevent gunicorn


【解决方案1】:

Gunicorn 确实是最好的选择。它速度快,是用纯 Python 编写的(可以轻松部署在 Heroku 等托管服务上),并且维护良好,可用于大量 Python Web 应用程序。

默认情况下,Gunicorn 使用同步工作器类来处理请求,但只需在运行命令中添加 -k gevent 即可轻松将其配置为使用 gevent。

请注意:您应该始终在 NGINX、Varnish 等代理之后运行 gunicorn,因为这将允许 gunicorn 处理比其他方式更多的请求,因为响应缓冲。

【讨论】:

  • 我已经看到如果我将缓冲与 gevent 一起使用,我需要禁用它。是否取消了 Nginx 的好处?
  • 在后端服务器上使用 HTTP 有什么意义?与 FastCGI、SCGI 和 uwsgi 不同,HTTP 不是为前端到后端的通信而设计的,为此目的使用它有其局限性和问题。
  • 我相信你在使用 Heroku 时不必担心使用像 nginx 这样的反向代理运行,因为路由网格会处理它。
  • @Flavien 仅在您进行流式传输时使用,例如长轮询、彗星等。
  • @hafiz031 没有区别,一个是短版,另一个是长版,所以你可以使用其中一个(superuser.com/questions/174564/…
猜你喜欢
  • 1970-01-01
  • 2021-01-06
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2012-06-28
  • 2019-10-07
  • 2021-04-15
相关资源
最近更新 更多