17

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

这就是它的完成方式吗?也许这只是我理解与 apache 方式不同的范式的问题。

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

4

1 回答 1

27

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 有一些限制,例如不支持 keep-alive、streaming、ssl 和 websockets。

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

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

于 2011-10-22T03:26:19.477 回答