我发现有很多关于问候的帖子,例如Asynchronous Requests with Python requests
其中描述了grequest的基本用法以及如何通过grequests.get()
发送挂钩。我从该链接中提取了这段代码。
import grequests
urls = [
'http://python-requests.org',
'http://httpbin.org',
'http://python-guide.org',
'http://kennethreitz.com'
]
# A simple task to do to each response object
def do_something(response):
print ('print_test')
# A list to hold our things to do via async
async_list = []
for u in urls:
action_item = grequests.get(u, hooks = {'response' : do_something})
async_list.append(action_item)
# Do our list of things to do via async
grequests.map(async_list)
当我运行时,我没有输出
/$ python test.py
/$
因为有4个链接我希望输出为
print_test
print_test
print_test
print_test
我一直在寻找并且无法找到输出不足的原因我很有趣,因为我遗漏了一些关键信息。
答案 0 :(得分:1)
我还需要查看来源,但是如果你将钩子函数重写为
# A simple task to do to each response object
def do_something(response, *args, **kwargs):
print ('print_test')
它输出。所以它可能没有调用你原来的钩子(因为它传递的参数比你接受的多)并且捕获异常,所以你没有输出