用gevent运行web应用程序

时间:2011-10-21 21:15:18

标签: python gevent gunicorn

我想尝试使用gevent作为Web服务器和应用程序框架。我没有看到任何方法“重新启动”服务器或更新应用程序代码,而不会再次杀死和启动整个python应用程序。

这是怎么做的?也许这只是我理解不同范式的apache方式的问题。

此外,作为一个半相关的问题,通过gevent运行Web服务器和站点/服务本身甚至是个好主意。我已经看到其他实现使用gunicorn作为服务器和gevent的应用程序,但从我看到的基准测试,gevent远远超过gunicorn作为服务器进行扩展。

1 个答案:

答案 0 :(得分:24)

Gunicorn有3名gevent工人:

  • -k gevent(使用gunicorn的HTTP解析器)
  • -k gevent_pywsgi(使用gevent.pywsgi模块)
  • -k gevent_wsgi(使用gevent.wsgi模块)

gevent.wsgi是一个基于libevent的快速HTTP服务器。

gevent.pywsgi是用Python实现的WSGI服务器。

gevent.pywsgi存在的原因是libevent-http有few limitations,例如不支持keep-alive,streaming,ssl和websockets。

请注意,新alpha version (1.0a3) of gevent使用libev并且不包含基于libevent-http的WSGI服务器。目前,gevent.wsgi是gevent.pywsgi的别名。

gevent中的服务器类没有与进程管理,重新启动,重新加载等相关的任何功能。但这些功能对于部署是必要的。 Gunicorn为gevent的WSGI服务器提供了这个功能。使用它。