尝试/除了未捕获未来的TimeoutError

时间:2018-01-15 11:57:27

标签: error-handling timeout python-3.6 python-asyncio try-except

有人可以向我解释这里发生了什么吗? 我想在超时错误中添加一条消息:

future = asyncio.run_coroutine_threadsafe(do_stuff(), loop=loop)
try:
    return future.result(timeout=3)
except TimeoutError:
    raise TimeoutError("Time out occurred while doing stuff")

future.results()(concurrent.futures._base.py)如下所示:

def result(self, timeout=None):
    # bla bla bla
    else:
        raise TimeoutError()

但是当超时发生时,我的try / except子句不会捕获超时。事实上

future = asyncio.run_coroutine_threadsafe(do_stuff(), loop=loop)
try:
    return future.result(timeout=3)
except Exception as e:
    log.error(str(e))

显示空e。 WTH?

1 个答案:

答案 0 :(得分:2)

行。我知道。我应该使用except asyncio.TimeoutError:,而不是TimeoutError