gpt4 book ai didi

python - 如何使用 asyncio 定期执行函数?

转载 作者:IT老高 更新时间:2023-10-28 21:31:34 25 4
gpt4 key购买 nike

我正在从 tornado 迁移到 asyncio,但找不到与 tornado 等效的 asyncio > 的 PeriodicCallback。 (PeriodicCallback 有两个参数:要运行的函数和调用之间的毫秒数。)

  • asyncio 中是否有这样的等价物?
  • 如果不是,那么什么是最简洁的方法来实现它,而不会冒着在一段时间后获得 RecursionError 的风险?

最佳答案

对于低于 3.5 的 Python 版本:

import asyncio

@asyncio.coroutine
def periodic():
while True:
print('periodic')
yield from asyncio.sleep(1)

def stop():
task.cancel()

loop = asyncio.get_event_loop()
loop.call_later(5, stop)
task = loop.create_task(periodic())

try:
loop.run_until_complete(task)
except asyncio.CancelledError:
pass

对于 Python 3.5 及更高版本:

import asyncio

async def periodic():
while True:
print('periodic')
await asyncio.sleep(1)

def stop():
task.cancel()

loop = asyncio.get_event_loop()
loop.call_later(5, stop)
task = loop.create_task(periodic())

try:
loop.run_until_complete(task)
except asyncio.CancelledError:
pass

关于python - 如何使用 asyncio 定期执行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37512182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com