當在回調中執行異步urlfetch
調用並且在一個tasklet內部時,似乎從回調中引發的異常不會傳播到包裝tasklet。從urlfetch回調中引發的異常
示例代碼:
def cb() :
raise Exception, 'just a test'
rpc = urlfetch.create_rpc(callback = cb)
@ndb.tasklet
def t() :
try :
response = yield urlfetch.make_fetch_call(rpc, 'http://...')
except :
print 'an error occured'
raise ndb.Return
t().get_result()
在上面的代碼中,由開發服務器執行時,「只是一個測試」異常不會卡在微進程內;即。而不是輸出到控制檯的錯誤消息,我得到了「只是一個測試」異常報告。
如果存在與make_fetch_call
相關的通用urlfetch
異常(例如在出現錯誤URL時爲DownloadError
),則會正確處理它。
在這種情況下,有沒有辦法在tasklet中捕獲回調生成的異常?或者,也許應該將此行爲視爲錯誤?
謝謝。
如果在你的URL空間20%的 更換它會幫助你解決你的問題 – 2014-10-17 10:55:12