如何在使用twistd启动twisted应用时获取'reactor'?

5 投票
1 回答
1318 浏览
提问于 2025-04-17 03:34

我的应用程序使用'twisted.web.client.Agent'来获取网页内容。但是,Agent类需要一个'reactor'实例才能启动。如果我使用'twistd'来启动我的应用程序,就根本不会有'reactor.run()'这个步骤。那么,我该如何获取'reactor'实例呢?

1 个回答

12

我希望有一个更好的答案,但在Twisted应用程序中获取当前活跃的反应器(reactor)的方法是:

from twisted.internet import reactor

这里需要注意的是,不要到处乱用这个方法,而是要在你代码的“顶部”附近使用一次,这样你就可以方便地在测试时替换反应器,或者以其他方式修改它的行为(比如,你可以把connectTCP改成通过代理连接)。这就是为什么Agent需要一个reactor参数,而不是直接导入当前的反应器。

撰写回答