我目前正在开发一个扭曲的项目,它为连接到服务器的每个客户端建立到另一个源(basic.lineReceiver
)的连接。
响应链应该是这样的:
客户端连接 -> 客户端消息 ID 到服务器 -> 服务器建立自定义源连接 -> 服务器持续使用来自源的传入消息生成数据 -> 服务器持续向相应客户端广播数据
来源:客户 - 1:1 关系
我的猜测是将每个源连接分派(dispatch)到一个新线程并监听传入的消息。非常喜欢:
Producing content indefinitely in a separate thread for all connections?
但是在 twisted 启动后,我如何在新线程中分派(dispatch)与 reactor 的每个新连接?
最佳答案
这里的线程是一个红色的鲱鱼。你想要的是代理许多(或至少几个)连接。您可以通过多种方式做到这一点,但如果您打算使用 Twisted 来做到这一点,您不妨跳过涉及线程的方式。
看看the existing forwarder in Twisted以获得有关如何完成此操作的一些想法。
这里的一般想法是,您可以使用 Twisted 来设置传出连接,然后在任何时候从该传出连接读取数据时接收带有数据的回调。然后您可以通过传入连接发送回该数据。 Twisted 为您处理 I/O 并在单个线程(“ react 器线程”)中调用您的所有代码,因此不需要额外的线程。
关于python - 每个连接都有单独的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9468761/