我有以下代码:
@asyncio.coroutine
def do_something_periodically():
while True:
asyncio.async(my_expensive_operation())
yield from asyncio.sleep(my_interval)
if shutdown_flag_is_set:
print("Shutting down")
break
我运行这个函数直到完成。设置关闭时会出现问题 - 功能完成并且任何挂起的任务都不会运行。
这是错误:
task: <Task pending coro=<report() running at script.py:33> wait_for=<Future pending cb=[Task._wakeup()]>>
如何正确安排关机?
为了给出一些上下文,我正在编写一个系统监视器,它每 5 秒从 /proc/stat 读取一次,计算该期间的 cpu 使用率,然后将结果发送到服务器。我想继续安排这些监控作业,直到我收到 sigterm,当我停止安排时,等待所有当前作业完成,然后优雅地退出。