Вызов функций через 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')

это ставит вывод. Так что, вероятно, вам не удастся вызвать исходный хук (потому что он передает больше аргументов, чем вы принимаете) и перехватить исключение, поэтому вы не получите никакого вывода

Другие вопросы по тегам