APScheduler
Python で cron みたいなジョブスケジューラなライブラリが無いかと思って探してたら、APScheduler というのを見つけた。
Advanced Python Scheduler — APScheduler 3.5.3.post19 documentation
Scheduler やジョブを登録する Job stores などを組み合わせて使える。
たとえば Scheduler には Python の Thread を使ってうごく BackgroundScheduler や
Gevent とか、Tornado とかあったりする。
登録したジョブはメモリ上に保存だと、当然スケジューラを再起動したら奇麗に忘れてくれるので、永続化したい場合は Job stores で Redis とか MongoDB をつかって永続化する。
サンプルコードを見ればある程度なにが出来るのか分かりやすい。
https://bitbucket.org/agronholm/apscheduler/src/e1555923725601b92abd7219728c01e6179dbf86/examples/schedulers/background.py
この場合、BackgroundScheduler に 3 秒ごとに tick() という関数を呼び出すという処理になる。
こんな感じに 3 秒間隔でジョブを呼び出すほかに、cron のように毎日午前 0 時に実行みたいな感じでスケジュールを組んでジョブを実行のようなのが出来る。
apscheduler.triggers.cron — APScheduler 3.5.3.post19 documentation
ライブラリといよりフレームワークに近いけど、自分がやりたい事が簡単に出来たのでお勧め。
# いくつかハマりポイントがあったが、いずれまた…。