Pythonとcronで秒単位で定期処理する
やりたいこと
解決方法
Pythonスクリプト作成
下記のように、実行間隔(秒)と実行回数をコマンドライン引数で与えて、Pythonのスクリプトの中で繰り返し実行できるようにします。
import argparse from datetime import datetime import time # ここに定期実行したい処理を記載 def main(): pass if __name__ == '__main__': argparser = argparse.ArgumentParser() argparser.add_argument('-i', '--interval', type=int, default=1) argparser.add_argument('-c', '--count', type=int, default=1) args = argparser.parse_args() _start_time = 0 for i in range(args.count): while int(datetime.now().strftime('%s')) - _start_time < args.interval: time.sleep(0.1) _start_time = int(datetime.now().strftime('%s')) # ここで定期実行したい処理を呼び出す main()
Pythonスクリプトをcronに設定
例えば、5秒毎に処理をしたい場合には、下記のようにcronの設定をします。
$ crontab -e ---- * * * * * /path/to/python_script -i 5 -c 12 ----