在扭曲的文档中,它说:
新的应用程序代码应该更喜欢在需要的地方传递和接受反应器作为参数,而不是依赖能够导入此模块来获取引用。这简化了单元测试,并且有朝一日可能更容易支持多个反应器(作为性能增强),尽管目前还不可能。
这样做的首选方法是什么?特别是,将它传递给协议的最佳方式是什么?(特别是当标准的 twisted.internet.protocol.Factory 就足够了。)
编辑:澄清一下,由于协议没有直接实例化,我想知道下面的方法是否是首选方法,或者是否有更好的方法允许访问协议中的反应器。
class MyFactory(protocol.Factory):
def __init__(self, rct):
self.reactor = rct
class MyProtocol(protocol.Protocol):
def __init__(self):
self.reactor = None
def connectionMade(self):
self.reactor = self.factory.reactor
if __name__=="__main__":
from twisted.internet import reactor
f = MyFactory(reactor)
f.protocol = MyProtocol
reactor.listenXXX(whatever)
reactor.run()
仅仅为了访问反应器而创建工厂类似乎有点愚蠢,因为想要访问反应器必须相当普遍。