代码来自:http://technicae.cogitat.io/2008/06/async-batching-with-twisted-walkthrough.html
文章由浅入深,最终给出了一种简洁漂亮的代码形式,终于不会twisted(绕)到自己。
直接贴最终版代码:
from twisted.internet import defer, reactor, task from twisted.web.client import getPage maxRun = 2 urls = [ 'http://twistedmatrix.com', 'http://yahoo.com', 'http://www.google.com', ] def pageCallback(result): print len(result) return result def doWork(): for url in urls: d = getPage(url) d.addCallback(pageCallback) yield d def finish(ign): reactor.stop() def test(): deferreds = [] coop = task.Cooperator() work = doWork() for i in xrange(maxRun): d = coop.coiterate(work) deferreds.append(d) dl = defer.DeferredList(deferreds) dl.addCallback(finish) test() reactor.run()
您可以选择一种方式赞助本站
支付宝转账赞助
