如何在扭曲的装饰器defer.inlineCallbacks中传递参数?

时间:2019-07-11 02:30:14

标签: python twisted

我想将url传递给任务功能,以便一次使用获得不同的网站内容。 但看起来它无法完成。它将毫无例外地停止。

    from scrapy.selector import Selector

def get_response_callback(content):
    txt = str(content,encoding='utf-8')
    resp = Selector(text=txt)
    title = resp.xpath('//title/text()').extract_first()
    print(title)

@defer.inlineCallbacks
def task(*args,**kwargs):
    # url = 'http://www.baidu.com'
    url=kwargs.get('url')
    print(url)
    d=getPage(url.encode('utf-8'))
    d.addCallback(get_response_callback)
    yield d

def done(*args,**kwargs):
    reactor.stop()

task_list = []
url_list = ['http://www.baidu.com','http://www.bing.com','http://www.qq.com']
for i in url_list:
    d=task(url=i)
    task_list.append(d)

dd = defer.DeferredList(task_list)

dd.addBoth(done) # should use done1 to avoid not stoping the function

reactor.run()

如何将参数传递给任务函数?

0 个答案:

没有答案