Вызов функций через grequests
Я понимаю, что было много постов по греквестам, таким как асинхронные запросы с запросами Python, которые описывают базовое использование скриптов и как отправлять хуки через 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
Я искал вокруг и не смог найти причину отсутствия вывода. Я забавляюсь, что есть некоторая ключевая информация, которую мне не хватает.
1 ответ
Мне нужно еще проверить источники, но если вы переписываете свою функцию ловушки как
# A simple task to do to each response object
def do_something(response, *args, **kwargs):
print ('print_test')
это ставит вывод. Так что, вероятно, вам не удастся вызвать исходный хук (потому что он передает больше аргументов, чем вы принимаете) и перехватить исключение, поэтому вы не получите никакого вывода