LoginSignup
10
12

More than 3 years have passed since last update.

Pythonで自動ジョブを実行する

Posted at

Pythonでcronジョブを回すのに何か良いアイデアはないかなと探しいたところ、APSchedulerというライブラリを見つけた。

基本的にできることは以下のようなところ。

  • 開始/終了時間を設定した上でのcronスケジューリング
  • 均等間隔でcronを実行
  • 設定した日時に1回限り実行

今回は10分おきにAPIを叩いて、情報が取得できた場合はそのデータを保存する的なやつを作る予定だったので、この要件には十分満たしていた。あとは、環境やフレームワークごとにそれぞれSchedulerを起動するメソッドが用意されているので結構便利。

APSchedulerをインストール

$ pip install apscheduler

処理を書く

app/schedule.py
def hello_world():
  print("Hello World!")

sched = BackgroundScheduler(standalone=True,coalesce=True)
sched.add_job(hello_world, 'interval', minutes=1)
sched.start()

これで1分おきに「Hello World!」が表示される。

読み込む

Flaskでアプリケーションを作っていたので、__init__.pyで読み込んであげれば、ローカル環境でも、本番環境(Heroku)でも問題なく動いていた。

app/__init__.py
import app.schedule

ライブラリを読んで進めれば何てことはないのだけど、案外日本語の記事がすぐに出てこなかったりもしたので、備忘録的に残しておいた。

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12