如何在回调中捕获来自request_future的异常

时间:2018-10-19 17:12:48

标签: python python-requests future

我现在正在使用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捕获异常。我已经尝试过,而不是使用后台回调来代替我在getPropertiesUrl中创建的将来调用add_done_callback(callback)。但是,虽然我可以在done_callback中检测到异常,但是我还没有弄清楚如何返回创建的数据对象,以便在完成的回调中调用代码中可以使用它。

我知道的唯一方法是使用实​​现自己的结果方法的包装器包装未来,该方法可以捕获异常,但是我觉得必须有一种更清洁的方法。我该如何做,以便我的回调代码可以处理异常,从而使调用代码不必处理它。

0 个答案:

没有答案