Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tornado中如何从子进程向websocket客户端发送消息?_Python_Websocket_Tornado - Fatal编程技术网

Python 在Tornado中如何从子进程向websocket客户端发送消息?

Python 在Tornado中如何从子进程向websocket客户端发送消息?,python,websocket,tornado,Python,Websocket,Tornado,我有龙卷风服务器。它从websocket连接接收消息。我需要将worker函数作为一个单独的进程运行,worker应该对客户端负责。其主要思想是以并行模式工作。像这样的 def worker(ws,message): input = json.loads(message) t = input["time"] time.sleep(t) ws.write_message("Hello, World!"*int(t)) class MainHandler(torna

我有龙卷风服务器。它从websocket连接接收消息。我需要将worker函数作为一个单独的进程运行,worker应该对客户端负责。其主要思想是以并行模式工作。像这样的

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

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index.html')

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

    def open(self):
        print("WebSocket opened")
        self.application.webSocketsPool.append(self)

    def on_message(self, message):
        for key, value in enumerate(self.application.webSocketsPool):
            if value == self:
                p = Process(target=worker, args=(value.ws_connection,message,))
                p.start()

    def on_close(self):
        print("WebSocket closed")
        for key, value in enumerate(self.application.webSocketsPool):
            if value == self:
                del self.application.webSocketsPool[key]

当然,这不起作用,因为酸洗错误。如何解决这个问题?

“当然,这不起作用”。到底发生了什么?你期待什么?酸洗错误。在这种情况下,不可能将ws_连接作为函数参数传递。我希望子进程将发送答案。您是否曾经让它工作过?我也在尝试同样的事情。