返回信息流在handler 中await另外一个库的函数,函数中callback里raise exception了,但是exception在handler不能捕获,导致无法正常返回reponse. 使用context也只能在另外的处理函数里捕获异常 但是无法回到await。
请问有人处理过类似情况么?
更新:
try:
result = await func(XXX)
except Exception:
result = None
do sth with result
这个func函数自己返回的是future,但是func内部的callback raise exception了,但是外面的 except 抓不住
这是一条镜像帖。来源:北邮人论坛 / python / #22056同步于 2018/6/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【求助】Tornado 异步中异常处理
hongbaoshu
2018/6/5镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
能否具体一下呢? 现在await func() 这个func返回应该是个future,但是内部raise exception 后就不反回了
【 在 specops 的大作中提到: 】
: 用future包裹一下试试
try:
wait future
except:
pass
这样的语句应该是有效的
没有用的话改成await asyncio.ensure_future(func())试一下
try:
result = await func(XXX)
except:
result = None
do sth with result
现在就是这么写的
这个函数自己返回的就是future,但是func内部的callback raise exception了。。。
【 在 specops 的大作中提到: 】
: try:
: wait future
: except:
: ...................
抱歉之前理解错题意了。。。[ema1]
表示现在还不太理解你的程序的整个结构,没法给出具体的建议
不过一般来说,可以设置一个超时,如果timeout就直接raise HTTPError(500)
现在就是这么做的 主handler里 只能默默等 await 超时。。。
【 在 specops 的大作中提到: 】
: 抱歉之前理解错题意了。。。
: 表示现在还不太理解你的程序的整个结构,没法给出具体的建议
: 不过一般来说,可以设置一个超时,如果timeout就直接raise HTTPError(500)