0

问题几乎说明了一切。如果我在带有 Supervisor 的服务器上运行 Tornado,当我部署代码并需要重新启动 Tornado 服务器时,活动请求会发生什么情况?他们在请求中被丢弃了吗?他们可以完成吗?

4

1 回答 1

2

Supervisord 向 tornado 进程发送一个 HUP 或 TERM 之类的信号,最重要的一点是 tornado 如何处理它。

不幸的是,tornado 会在收到 HUP、TERM、INT 等信号时简单地退出。

Tornado 有一个名为 autoreload 的子模块,它使应用程序可以检测到代码文件的变化并重新加载应用程序,但它只适用于一个进程的调试模式,而不适用于 WSGI 应用程序。是开发工具。

但是,我们可以在 run tornado.autoreload._reload 函数中手动定义一个函数,并将其注册到 HUP sigal。tornado.autoreload.add_reload_hook可以添加函数,应该在重新加载时调用。

因为tornado在fork模式下不能很好的管理进程,所以建议为不同的端口运行多个独立的进程。在这种模式下,_reload 将像设置调试标志一样工作。

毕竟,对其进行测试和基准测试以确保它在您的应用程序中运行良好。

于 2012-06-02T11:56:49.343 回答