首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步请求不使用GRequests

异步请求不使用GRequests
EN

Stack Overflow用户
提问于 2017-08-26 14:01:25
回答 1查看 1.6K关注 0票数 2

我在做一个项目。它从文件中读取urls,然后发出请求。但处理人员不会被打电话。

这是我的代码:

代码语言:javascript
复制
import grequests


def main():
    async_list =[]

    for site in extractsites():
        action_item = grequests.get('http://' + site, hooks={'response': handleresponse})
        async_list.append(action_item)

    grequests.map(async_list)


def extractsites():
    return ['google.com']


def handleresponse(response):
    print(response)


if __name__ == '__main__':
    main()

有人能明白为什么它不起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-26 14:27:54

处理程序必须具有不同的签名,可以传递其他参数:

代码语言:javascript
复制
def handler(response, **kwargs):
    print(response, kwargs)

完整的例子:

代码语言:javascript
复制
import grequests

def main():
    async_list =[]

    for site in extractsites():
        action_item = grequests.get('http://' + site, hooks={'response': handleresponse})
        async_list.append(action_item)

    grequests.map(async_list)

def extractsites():
    return ['google.com']

def handleresponse(response, **kwargs):
    print(response, kwargs)

if __name__ == '__main__':
    main()

或更短:

代码语言:javascript
复制
import grequests
urls = ['http://google.com']
handler = lambda response, **kwargs: print(response, kwargs)
grequests.map(grequests.get(url, hooks={'response': handler}) for url in urls)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45896226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档