龙卷风 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 服务器 - 连接队列的主要内容,如果未能解决你的问题,请参考以下文章

在HAproxy中,我的websocket连接在50秒后关闭。怎么改呢?

完全停止线程龙卷风 WebSocket 服务器

如何限制龙卷风 websocket 消息大小

如何从本地机器公开龙卷风 websocket

Django + 龙卷风 |图片上传

托管龙卷风/websocket 应用程序