Задать вопрос
@GilbertAmethyst

Как передать дополнительный аргумент в callback функцию?

Здравствуйте.

Есть примерно такой python код:
def response_handler(response, **kwargs):
    print(response.url)

urls = [
{"id":1, "url":"http://httpbin.org/delay/1"},
{"id":2, "url":"http://httpbin.org/delay/1"}
]

results = grequests.map((grequests.get(u["url"], callback=response_handler) for u in urls))


Задача:
Нужно дополнительно передать в callback-функцию response_handler параметр u["id"], чтобы по итогу знать какой объект массива был получен. Пробовал функцию lambda, но появляется ошибка:
<lambda>() got an unexpected keyword argument 'timeout'


Подскажите, как сделать?
  • Вопрос задан
  • 611 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
def response_handler(response, url_id):
    print(response.url)

results = grequests.map(
  (grequests.get(u["url"], callback=lambda r, uid=u['id'], **kw: response_handler(r, uid)) for u in urls))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы