Tornado - 当子进程立即终止时如何收到错误?

问题描述 投票:0回答:1

我继承了一个旧的 Tornado 项目并正在尝试更新它。 (我指出这个上下文是因为它可能不是根据当前的最佳实践设置的。)

现在,它调用

tornado.process.fork_processes()
并开始循环,结果却陷入了无限循环:

 child 2 (pid 28921) exited with status 9, restarting
 child 1 (pid 28920) exited with status 9, restarting
 child 0 (pid 28919) exited with status 9, restarting

我检查了官方文档,搜索了其他问答,并尝试搜索 github 问题,但找不到任何解决我令人难以置信的基本问题的内容:如何查看导致这些子进程立即终止的错误消息?

python tornado
1个回答
0
投票

通常龙卷风应用程序使用类似

enable_pretty_logging
:

之类的东西
from tornado.log import enable_pretty_logging
from tornado.options import define, options, parse_command_line

因此可以使用命令开关来启用日志记录和调试:

--logging=debug --debug --port=3333

您可以通过传递参数来仅创建一个进程:

tornado.process.fork_processes(1, max_restarts=1)
https://www.tornadoweb.org/en/stable/process.html#tornado.process.fork_processes

或注释掉分叉并启动单个服务器(取决于您使用的tornado版本,它可能看起来与此类似):

def main():
    app = make_app()
    #sockets = bind_sockets(options.port)                                                                                              
    #tornado.process.fork_processes(0)                                                                                                 
    async def post_fork_main():
        server = HTTPServer(app)
        #server.add_sockets(sockets)                                                                                                   
        server.listen(options.port)
        await asyncio.Event().wait()
    asyncio.run(post_fork_main())

if __name__ == "__main__":
    parse_command_line()
    enable_pretty_logging(options)
    main()
© www.soinside.com 2019 - 2024. All rights reserved.