我正在尝试设置一个计时器,它将中断正在运行的进程并在它触发时调用协程。但是,我不确定完成此操作的正确方法是什么。我找到了 AbstractEventLoop.call_later 和 threading.Timer,但它们似乎都不起作用(或者我使用不当)。代码非常基本,看起来像这样:
def set_timer( time ):
self.timer = Timer( 10.0, timeout )
self.timer.start()
#v2
#self.timer = get_event_loop()
#self.timer.call_later( 10.0, timeout )
return
async def timeout():
await some_func()
return
设置非阻塞计时器的正确方法是什么,它会在几秒后调用回调函数?能够取消计时器将是一种奖励,但不是必需的。我需要的主要东西是:非阻塞和成功调用协程。现在它返回一个错误,对象不能被等待(如果我抛出一个等待)或者 some_func 从未被等待,并且预期的输出永远不会发生。
原文由 Greg Miller 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 ensure_future 创建 任务 是在不阻塞执行流程的情况下开始执行某些作业的常用方法。您也可以 取消 任务。
我为您编写了示例实现,让您可以从以下开始:
输出: