Django + Docker環境でCron【Djangoアウトプット】

この記事は 146 で読めます。

ちょっとハマったので手順を残しておきます。
結論から言うとdocker-compose.ymlにてuwsgiと一緒にcronを起動する方法で定期的に実行してくれるようになりました。

このログは、こちらのレポジトリでDjango+Dockerセットアップ後の環境を想定しています。

Cronのインストール

まずはdjangoコンテナに入り、Cronをインストールして使えるようにしておきます。

Django_crontabのインストール

djangoにはカスタムコマンドをCronで実行させる方法がありますが、やや手順が多いため、Django_crontabというモジュールを使って楽をします。
続いて、モジュールをインストールします。

Cron実行ファイル作成

任意の場所に実行ファイルを配置します。念の為アプリケーションフォルダの直下などがよさそうです。

settings.py編集

Django_crontabとCronの登録をします。

「*/1 * * * *」が実行間隔(例では1分ごと)、「app.cron.do_something」が実行関数までのパス、「scheduled_job.log」が成功した際のログ、「scheduled_job_error.log」がエラーを起きた際のログが出力されます。
この辺は自由に変えられます。

Cronジョブ登録

以下のコマンドでジョブの追加や削除できます。

DockerもCronも詳しくなくてかなりハマりました。
以上です。

コメントを残す