Я использую request_future прямо сейчас, чтобы сделать остальные вызовы.Я использую callback_func, чтобы сначала разрешить некоторую обработку данных. Итак, в коде sudo что-то вроде этого (реальный код немного сложнее):
def callback(session, resp):
if not resp.status_code = 200:
resp.data = {
"errorMessage": 'got unexpected error code ' +resp.status_code
}
data = formatResult(resp.json())
def sendPropertiesRequest(baseUrl):
return __session.get(getPropertiesUrl(baseUrl), background_callback=callback)
В моем коде вызова:
for siteName, url in BaseConfigParser.getSites().items():
requests[siteName] = RestCaller.sendPropertiesRequest(url)
for siteName, request in requests.items():
responsData = request.result().data
// do junk with it
Я хотел бы обнаружить любые исключения, сгенерированные в будущем, и перехватить их в моем обратном вызове, возвращая сообщение об ошибке, вместо принудительной проверки на перехват везде, где используется этот метод.
Я не могу показатьсячтобы поймать исключение, используя background_callback, как я хотел.Я попытался вместо использования фонового обратного вызова вместо вызова add_done_callback (обратный вызов) на будущее, которое я создаю в getPropertiesUrl.Однако, хотя я могу обнаруживать исключения в done_callback, я не понял, как вернуть созданный мной объект данных, чтобы он был доступен в моем коде вызова из готового обратного вызова.
Единственный известный мне методчтобы обернуть будущее оболочкой, которая реализует свой собственный метод результатов, который перехватывает исключения, но я чувствую, что должен быть более чистый подход.Как сделать так, чтобы мой код обратного вызова мог обрабатывать исключения, чтобы вызывающий код не обрабатывал его.