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

标签 python multithreading thread-safety twisted

我目前正在开发一个扭曲的项目,它为连接到服务器的每个客户端建立到另一个源(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/

相关文章:

java - 如何使用 ScheduledExecutorService 处理重复任务中的错误?

multithreading - Eclipse 的多线程调试器

java - ConcurrentHashMap读写锁

python - 为什么当我给它一个高于 16 毫秒的参数时 pygame.time.set_timer() 停止工作?

Python - 将坐标写入数组

java - 多线程、计算密集型应用程序的潜在问题

delphi - Delphi中单独线程中运行WebService的问题

c - 无锁缓冲区

Microsoft UI 自动化的 Python 绑定(bind)?

python - 了解 __(双下划线)在 python 中的实际用法