【发布时间】:2019-08-29 04:12:42
【问题描述】:
我正在测试用于 websocket 客户端连接的网关服务器。我目前打开 10000 个客户端来连接并向我的网关服务器发送消息,它会回显所有消息。 当我键入'ctrl + c' 来停止进程时,需要很长时间才能停止,而且还有很多堆栈跟踪信息。所以我想计算循环中待处理任务的数量,并找到一个解决方案,在没有堆栈跟踪信息的情况下更快地停止 ioloop
我在https://www.tornadoweb.org/en/stable/ioloop.html找不到任何关于ioloop任务计数的api,所以我在这里问。
服务器端代码:
def create_application():
return tornado.web.Application([(r'/', WebSocketHandler)])
if __name__ == '__main__':
app = create_application()
app.listen(60017)
客户端代码:
if __name__=='__main__':
try:
for i in range(1, 10000):
wsc = WSClient('ws://127.0.0.1:60017', 'pname_' + str(i))
wsc.start()
ws_list.append(wsc)
print('ws_client pname[%s] started!!!'%('pname_' + str(i)))
tornado.ioloop.IOLoop.current().add_timeout(time.time() + 1, counting_packs)
tornado.ioloop.IOLoop.current().start()
except Exception as e:
print(str(e))
我希望每秒计算待处理任务的数量... 如果有人能告诉我该怎么做,将不胜感激。非常感谢!!!
【问题讨论】:
标签: tornado python-3.5 ioloop