getPage里面的延迟对象打印?

时间:2012-11-19 14:19:28

标签: python asynchronous twisted addcallback

我想创建一个回调,在特定的URL上执行getPage并在操作完成时将其打印出来。目前,当我打印dpage时(请参阅下面的代码),我得到了延迟对象与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()

1 个答案:

答案 0 :(得分:0)

你可能应该使用较新的,更加流畅的twisted.web.client.Agent,而不是较旧且有限的getPage。很幸运,有a very thorough tutorial on how to use Agent及其一些配套课程,如ProxyAgentRedirectAgentCookieAgentContentDecoderAgent

首先,您可能希望熟悉how to use Deferreds上的文档。