【发布时间】:2014-10-17 10:50:12
【问题描述】:
当使用回调和在 tasklet 内执行异步 urlfetch 调用时,似乎从回调内引发的异常不会传播到包装 tasklet。
示例代码:
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()
在上面的代码中,由开发服务器执行,“只是一个测试”异常不会在 tasklet 中被捕获; IE。而不是将错误消息输出到控制台,而是报告了“只是一个测试”异常。
如果存在与make_fetch_call 相关的通用urlfetch 异常(例如DownloadError,如果URL 不正确),则会正确处理。
在这种情况下,有没有办法在 tasklet 中捕获回调生成的异常?还是应该将此行为视为错误?
谢谢。
【问题讨论】:
-
如果您的网址中有空格,请将其替换为 %20 它将帮助您解决问题
标签: python google-app-engine asynchronous urlfetch