python多处理包装tornado.ioloop



我对python的多重处理非常陌生,我对异步调用、yield等有一些概念……这是最基本的东西。我看到了这个片段,其中包含多处理。过程围绕龙卷风ioloop.ioloop.instance

# Set up the tornado web app
app = make_app(predicted_model_queue)
app.listen(8080)
server_process = Process(target=tornado.ioloop.IOLoop.instance().start)
# Start up the server to expose the metrics.
server_process.start()

它打算启动一个龙卷风服务器作为服务器进程,但代码不起作用。我得到了错误,

OSError: [Errno 9] Bad file descriptor

我对这两个lib都没有经验,也不知道如何修复。有人能帮我吗?

这是一个不寻常的模式-如果你正在编写一个新的应用程序,我不建议复制它。

如果你只是想运行一个这样做的应用程序(看起来它来自这里(,问题是IOLoops无法安全地跨越流程边界(在某些平台上,它有时可以工作,但并不总是如此(。要重写此代码以在子进程中正确创建应用程序和IOLoop,您可以这样做:

def run_server():
app = make_app(predicted_model_queue)
app.listen(8080)
tornado.ioloop.IOLoop.current().start()
server_process = Process(target=run_server)
server_process.start()

通过这种方式,在两个进程之间仅共享predicted_model_queue

相关内容

  • 没有找到相关文章

最新更新