【发布时间】:2018-07-03 07:08:39
【问题描述】:
我有一个用 python tornado 编写的 websocket 服务器。服务器将接收来自客户端的许多连接,如您所知,我们有on_message 函数,当接收到 websocket 消息时会触发该函数。所以,这是我的问题,如果一条消息(比如来自客户端的请求)需要 5 秒来处理,那么当服务器正在处理一些请求时,服务器会进入阻塞模式并且不能接受或接收更多的连接或数据。经过一些研究,我发现Asyncio 可以解决我的问题,但我现在不知道如何使用它。那么,如何调用process 方法以避免阻塞?
以下是我的代码:
class WavesClient(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True
def open(self):
print("New client connected")
def on_message(self, message):
self.process(message)
def on_close(self):
print("Client disconnected")
def process(self,message):
#it takes 5 sec to complete
【问题讨论】:
-
反正我没有得到答案
-
您不久前问过类似的问题。我回答了,你接受了这个答案。基本上,解决方案是在单独的线程中运行阻塞代码。但是您现在似乎已经删除了旧问题。
标签: python asynchronous websocket tornado