我想创建一个回调,在特定的URL上执行getPage
并在操作完成时将其打印出来。目前,当我打印d
或page
时(请参阅下面的代码),我得到了延迟对象与page
内容的引用。
为什么延迟对象的内存位置会在打印page
和打印d
之间发生变化?
最终我希望这个程序循环浏览我的4个网站的列表,为每个单独的连接创建回调,关闭它们,并在它们准备就绪时打印每个页面。如果问的不是太多,可以证明这一点吗?
from twisted.web.client import getPage
from twisted.internet import reactor
from twisted.internet.defer import Deferred
def connect(url):
page = getPage(url)
print page
返回<Deferred object at 0x23dcc68>
。
print d
返回<Deferred object at 0x7f1bacacc3b0>
。
当前结果(以'http://www.example.com'为例):
d = Deferred()
d.addCallback(connect)
reactor.callWhenRunning(d.callback, 'http://www.example.com')
reactor.callLater(4, reactor.stop)
reactor.run()
答案 0 :(得分:0)
你可能应该使用较新的,更加流畅的twisted.web.client.Agent
,而不是较旧且有限的getPage
。很幸运,有a very thorough tutorial on how to use Agent
及其一些配套课程,如ProxyAgent
,RedirectAgent
,CookieAgent
和ContentDecoderAgent
。
首先,您可能希望熟悉how to use Deferred
s上的文档。