@GilbertAmethyst

Как отловить ошибку в потоке Python?

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

Пишу достаточно простое приложение на Python (3.6).

Задача:
Делать множественные повторяющиеся асинхронные get запросы с digest-авторизацией.

В данный момент использую следующий код:
Для примера я осознанно сделал ошибку: установил timeout в 5 секунд для запроса, который гарантированно будет длиться 10. Происходит ошибка. Хотелось бы её как-то хэндлить, но не понимаю как это сделать.
from threading import Thread
from requests import get, post, put, patch, delete, options, head
from requests.auth import HTTPDigestAuth

request_methods = {
    'get': get,
    'post': post,
    'put': put,
    'patch': patch,
    'delete': delete,
    'options': options,
    'head': head,
}

def result(response, otherdata):
    print(str("OtherData: ") + otherdata + str(" Content: ") + str(response.content))
    input("Job done!")

def async_request(method, *args, callback=None, timeout=15, **kwargs):
    method = request_methods[method.lower()]
    if callback:
        def callback_with_args(response, *args, **kwargs):
            callback(response)
        kwargs['hooks'] = {'response': callback_with_args}
    kwargs['timeout'] = timeout
    thread = Thread(target=method, args=args, kwargs=kwargs)
    thread.start()

async_request('get', 'http://httpbin.org/delay/10', auth=HTTPDigestAuth("login", "pass"), timeout=5, callback=lambda res: result(res,"123"))


Подскажите, пожалуйста кодом, если это возможно.
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 1
@santaatnas
Java, Python, Php
Я знаю единственный метод отловить ошибку = включить вызываемый метод в блок try и поймать в блоке except.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы