Mik*_*cic 19 python events multithreading twisted reactor
我已经知道了一个应用程序,我想继续学习更多关于Twisted和WebSockets的知识.我正在考虑将以前编写的IRC Bot集成到Web应用程序中.据我所知,我需要三个反应器来使它工作:
在我看来,这是有道理的.似乎有可能.有没有人有任何多个反应器在不同的线程中运行的例子,或者这是我想象的那些在扭曲的当前版本中无法完成的事情.
是否可以(或应该)进行任何架构更改以最小化反应器数量等?
谢谢你的帮助.
Gly*_*yph 20
幸运的是,很容易减少反应堆的数量,具体来说,减少到1:
在任何给定的Twisted过程中,您只能在单个线程中拥有一个单个反应器.如果你想要更多,没有什么可行的.
实际上,反应堆的重点是促进将多个事件源组合成一个线程.如果您想使用3种不同的协议监听3个不同的端口,您的应用程序可能如下所示:
from twisted.internet import reactor
reactor.listenTCP(4321, FirstProtocolFactory())
reactor.listenTCP(5432, SecondProtocolFactory())
reactor.listenTCP(6543, ThirdProtocolFactory())
reactor.run()
Run Code Online (Sandbox Code Playgroud)
当然,你可能实际上并没有listenTCP直接打电话给你自己,因为你可能想要使用Service来自twisted.application.internet你twistd的.tac文件或twistd插件.reactor.run()如果twistd是为你做的话,你就不需要打电话给自己了.我的观点是,通过任何方式,您可以使用您希望它作出反应的所有事件来加载反应堆 - 侦听服务器,客户端连接,定时事件 - 并且它将在每个事件发生时作出反应.(因此,"反应堆".)
对于什么FirstProtocolFactory,SecondProtocolFactory和ThirdProtocolFactory应该是什么的具体值,请参阅pyfunc答案中的链接.
不,我认为你不需要多个反应堆.
您需要的是一个多服务多协议应用程序.这就是Twisted真正闪耀的地方.
因此,您的应用程序应该启动Web服务,IRC Bot服务和WebSocket服务器.
使用扭曲的应用程序服务框架,专门启动多服务
查看IRC bot实现和扭曲的IRC协议支持:
并用于websocket和twisted
| 归档时间: |
|
| 查看次数: |
8139 次 |
| 最近记录: |