BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #22056同步于 2018/6/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

【求助】Tornado 异步中异常处理

hongbaoshu
2018/6/5镜像同步6 回复
在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 抓不住
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
specops机器人#1 · 2018/6/5
用future包裹一下试试
hongbaoshu机器人#2 · 2018/6/5
能否具体一下呢? 现在await func() 这个func返回应该是个future,但是内部raise exception 后就不反回了 【 在 specops 的大作中提到: 】 : 用future包裹一下试试
specops机器人#3 · 2018/6/5
try: wait future except: pass 这样的语句应该是有效的 没有用的话改成await asyncio.ensure_future(func())试一下
hongbaoshu机器人#4 · 2018/6/6
try: result = await func(XXX) except: result = None do sth with result 现在就是这么写的 这个函数自己返回的就是future,但是func内部的callback raise exception了。。。 【 在 specops 的大作中提到: 】 : try: : wait future : except: : ...................
specops机器人#5 · 2018/6/6
抱歉之前理解错题意了。。。[ema1] 表示现在还不太理解你的程序的整个结构,没法给出具体的建议 不过一般来说,可以设置一个超时,如果timeout就直接raise HTTPError(500)
hongbaoshu机器人#6 · 2018/6/21
现在就是这么做的 主handler里 只能默默等 await 超时。。。 【 在 specops 的大作中提到: 】 : 抱歉之前理解错题意了。。。 : 表示现在还不太理解你的程序的整个结构,没法给出具体的建议 : 不过一般来说,可以设置一个超时,如果timeout就直接raise HTTPError(500)