from twisted.web.client import getPage, deferfrom twisted.internet import reactordef callback(contents): print(contents)url_list = ['http://www.bing.com', 'http://www.baidu.com', ]for url in url_list: deferred = getPage(bytes(url, encoding='utf8')) deferred.addCallback(callback)reactor.run()
事件执行只有开始没有结束,因此需要规定某个目标任务的完成来终止事件
from twisted.web.client import getPage, deferfrom twisted.internet import reactordef callback(contents): print(contents)url_list = ['http://www.bing.com', 'http://www.baidu.com', ]_active = []for url in url_list: d = getPage(bytes(url, encoding='utf8')) d.addCallback(callback) _active.append(d)def all_done(arg): reactor.stop()xx = defer.DeferredList(_active)xx.addBoth(all_done)reactor.run()
将defer对象加入一个列表_active中以此来用defer方法DeferredList来监听该列表中的任务是否完成回调,在执行回调之后addBoth(表示无论错误还是成功都会执行该方法设置的函数)