我现在正在使用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中检测到异常,但是我还没有弄清楚如何返回创建的数据对象,以便在完成的回调中调用代码中可以使用它。
我知道的唯一方法是使用实现自己的结果方法的包装器包装未来,该方法可以捕获异常,但是我觉得必须有一种更清洁的方法。我该如何做,以便我的回调代码可以处理异常,从而使调用代码不必处理它。