每个连接都有单独的线程?

时间:2012-02-27 16:46:18

标签: python multithreading thread-safety twisted

我正在开发一个扭曲的项目,它为连接到服务器的每个客户端建立与另一个源(basic.lineReceiver)的连接。

响应链应如下所示:

客户端连接 - >客户端消息ID到服务器 - >服务器建立自定义源连接 - >服务器连续产生来自源的传入消息的数据 - >服务器不断向相应的客户端广播数据

来源:客户 - 1:1关系

我的猜测是将每个源连接分派到一个新线程并侦听传入的消息。非常喜欢:

Producing content indefinitely in a separate thread for all connections?

但是我如何在启动后在一个新线程中将每个新连接与反应器一起分派?

1 个答案:

答案 0 :(得分:1)

这里的线程是红鲱鱼。你想要的是代理许多(或至少几个)连接。您可以通过多种方式执行此操作,但如果您要使用Twisted执行此操作,则可以跳过涉及线程的方式。

看看the existing forwarder in Twisted,了解如何做到这一点。

这里的一般想法是,您可以使用Twisted来设置传出连接,然后在从该传出连接读取数据时随时接收带有数据的回调。然后,您可以通过传入连接发回该数据。 Twisted为您处理I / O并在单个线程中调用所有代码(“反应器线程”),因此不需要额外的线程。