龙卷风 websocket 服务器 - 连接队列
Posted
技术标签:
【中文标题】龙卷风 websocket 服务器 - 连接队列【英文标题】:tornado websocket server - connections queue 【发布时间】:2020-07-12 22:04:54 【问题描述】:我有一个处理数据的tornado.websocket.WebSocketHandler
。这个想法是实例化有限数量的处理程序(例如,它们受 CPU 内核数量的限制)。我想将其余连接放入队列中(一旦打开),以便在另一个完成时激活其中一个。
我试图通过threading.Semaphore
做到这一点,但似乎龙卷风套接字处理程序在单个线程中运行,所以一切都挂了。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:Tornado 在tornado.locks.Semaphore
中有自己的asynchronous semaphore class。
Tornado 旨在使连接变得非常便宜 - 每个核心一个连接将是一个极低的限制。我建议不要限制连接本身的数量,而是限制你对这些连接所做的事情。 (记住 GIL - 除非你为你的 cpu 密集型工作调用 C 扩展,否则无论如何你都不能使用 python 的多个 CPU 内核)。在有界的 ThreadPoolExecutor 上执行 CPU 密集型工作可能是完成听起来您正在尝试做的事情的最佳方式。
【讨论】:
以上是关于龙卷风 websocket 服务器 - 连接队列的主要内容,如果未能解决你的问题,请参考以下文章