【发布时间】:2017-10-25 19:21:34
【问题描述】:
我正在设计一个服务,该服务将打开约 30-50 个 websocket 连接,获取金融报价数据并将其写入 MongoDB;每秒可能会收到数百条消息。我正在使用 Autobahn 的 Python Twisted Websocket,但我想知道它在运行一个异步线程时是否可扩展。我的直觉是单线程 Twisted 和 MongoDB 都可以处理这种吞吐量,但我想确认这个假设。
我看到了 3 个潜在的选择:
- 使用 1 个线程,连接到所有 websocket 端点并调用 reactor.run()。
- 每个 websocket 连接都属于自己的线程,该线程有自己的 reactor.run()。将其作为一个主要的 unix 守护进程运行,生成所有线程。
- 每个 websocket 连接都属于自己的线程,作为 unix 守护进程在不同的脚本中运行。
什么是最可靠的选择?非常感谢!
【问题讨论】:
-
选项 3. 是唯一可以利用多个 cpu 内核的选项。
标签: multithreading asynchronous websocket twisted daemon