次のコードがあります。
@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 を受け取るまでこれらの監視ジョブをスケジュールし続けたいと思います。スケジュールを停止したら、現在のすべてのジョブが終了するのを待って、正常に終了します。