在Python3.8中,我想我理解了为什么除非包含asyncio.sleep(1),否则下面的forever函数不会在1秒后超时。这是因为它在离开队列后开始执行,队列中没有其他任务运行,因为它从不阻塞? 我需要完成的是调用用户提供的某个函数(比如永远)。他们可能会给我一个永远不会返回的函数(例如,它无限循环,不会阻塞)。那么,如何才能获得调用用户函数并允许它运行到超时的效果呢?#await asyncio.sleep(1)
# Wait for at most
我有一个asyncio.Task,我需要在一段时间后取消。在取消之前,任务需要做一些清理。根据文档,我应该只能调用task.cancel或asyncio.wait_for(coroutine, delay)并在协程中拦截asyncio.TimeoutError,但下面的示例不起作用。except asyncio.TimeoutError: #... do some stuff
yield from asyncio.wait_for</
我想在这个过程中设置一个超时,但它不应该是整个过程的全局超时。相反,每当我看到来自进程的特定输出时,我都希望真正地重置超时,以便重新开始。我如何实现这一点?对于全局超时,我有此工作,这很容易,我只需调用asyncio.wait_for(_foo(), timeout)。但我不能让这个和重置超时一起工作。asyncio.shield so it doesn't get cancelled if the timeout expires