【问题标题】:tornado websocket server - connections queue龙卷风 websocket 服务器 - 连接队列
【发布时间】:2020-07-12 22:04:54
【问题描述】:

我有一个处理数据的tornado.websocket.WebSocketHandler。这个想法是实例化有限数量的处理程序(例如,它们受 CPU 内核数量的限制)。我想将其余连接放入队列中(一旦打开),以便在另一个完成时激活其中一个。

我试图通过threading.Semaphore 做到这一点,但似乎龙卷风套接字处理程序在单个线程中运行,所以一切都挂了。我怎样才能做到这一点?

【问题讨论】:

    标签: python python-3.x websocket tornado python-multithreading


    【解决方案1】:

    Tornado 在tornado.locks.Semaphore 中有自己的asynchronous semaphore class

    Tornado 旨在使连接变得非常便宜 - 每个核心一个连接将是一个极低的限制。我建议不要限制连接本身的数量,而是限制你对这些连接所做的事情。 (记住 GIL - 除非你为你的 cpu 密集型工作调用 C 扩展,否则无论如何你都不能使用 python 的多个 CPU 内核)。在有界的 ThreadPoolExecutor 上执行 CPU 密集型工作可能是完成听起来您正在尝试做的事情的最佳方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多