我继承了一个旧的 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 问题,但找不到任何解决我令人难以置信的基本问题的内容:如何查看导致这些子进程立即终止的错误消息?
通常龙卷风应用程序使用类似
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()