apschedulerでPythonの関数を非同期実行する

creation date 2016/12/08 00:06 last date modified 2017/04/09 22:26 | category: | tags: Python
スポンサード リンク

Pythonで非同期実行を実現する方法はいくつかある。その中で APScheduler は学習コストの低さと,ジョブリストを外部DBに記録しておける点で優れている。仮にスケジューラプロセスが異常終了しても,DBからジョブリストを読み出して再開できるわけだ。

インストール

sudo pip install apscheduler

サンプルコード

DB連携はしてないけど, 以下のように記述しておけば,2秒ごとに最大10個のスレッドを実行できる。 簡単。

#!/usr/bin/env python
#from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.schedulers.blocking import BlockingScheduler
import time
from datetime import datetime


def job_function():
    print "1",datetime.now()
    time.sleep(10)
    print "2",datetime.now()


if __name__ == "__main__":
    #sc = BackgroundScheduler()
    sc = BlockingScheduler()
    sc.add_job(job_function, "interval", seconds=2, max_instances=10)
    sc.start()

Comments !

social