最佳答案
我有以下密码:
@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,当我停止调度时,等待所有当前作业完成,然后优雅地退出。