如何在使用twistd启动twisted应用时获取'reactor'?
我的应用程序使用'twisted.web.client.Agent'来获取网页内容。但是,Agent类需要一个'reactor'实例才能启动。如果我使用'twistd'来启动我的应用程序,就根本不会有'reactor.run()'这个步骤。那么,我该如何获取'reactor'实例呢?
1 个回答
12
我希望有一个更好的答案,但在Twisted应用程序中获取当前活跃的反应器(reactor)的方法是:
from twisted.internet import reactor
这里需要注意的是,不要到处乱用这个方法,而是要在你代码的“顶部”附近使用一次,这样你就可以方便地在测试时替换反应器,或者以其他方式修改它的行为(比如,你可以把connectTCP
改成通过代理连接)。这就是为什么Agent
需要一个reactor
参数,而不是直接导入当前的反应器。