【问题标题】:How to pass websocket to child process in Python Tornado?如何在 Python Tornado 中将 websocket 传递给子进程?
【发布时间】:2023-03-12 10:33:01
【问题描述】:

我有一个带有一些 Websockethandler 的 Tornado 服务器。我想创建一个工作人员池,以便将工作人员作为子进程启动并将 websocket 连接传递给工作人员。工作人员完成后,它应该向客户端发送答案。

def worker(message):
    inp_dict = json.loads(message)
    t = inp_dict["time"]
    time.sleep(t)
    return "Hello, World! "*int(t)

class WebSocket(tornado.websocket.WebSocketHandler):
    def check_origin(self, origin):
        return True

    def open(self):
        print("WebSocket opened")

    def on_message(self, message):    
        self.write_message(worker(message))

    def on_close(self):
        print("WebSocket closed")

怎么做?

【问题讨论】:

    标签: python websocket tornado


    【解决方案1】:

    不支持在进程之间传递连接。相反,将连接留在主进程中并使用例如multiprocessing.Queue 将简单对象(普通旧数据)来回发送给子进程。

    【讨论】:

    • 谢谢。但是,如何将答案从子进程发送到 websocket-client?
    • 例如上面的代码片段。如何从作为子进程启动的worker向websocket-client发送消息?
    • 上面的片段中没有子进程。请对此提出一个更详细的新问题。
    • @ben-darrel 我理解使用multiprocessing.Queue 来回发送简单消息,但是我们如何将连接留在主进程中?
    猜你喜欢
    • 2021-06-29
    • 2014-06-22
    • 2015-03-07
    • 2021-06-13
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多