【问题标题】:What does Tornado do with active requests when it is stopped?Tornado 停止后对活动请求做了什么?
【发布时间】:2012-06-01 17:41:56
【问题描述】:

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

【问题讨论】:

  • 不是真正的监督问题; supervisord 将使用 SIGTERM 以与其他任何方式相同的方式重新启动守护进程。

标签: python tornado supervisord


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多