私は Django を使用して Web アプリを開発していますが、定期的に実行されるジョブをスケジュールする方法があるかどうか知りたいです。
基本的には、データベースを実行して、定期的に自動で計算/更新を実行したいのですが、これを行う方法に関するドキュメントが見つからないようです。
これを設定する方法を誰か知っていますか?
明確にするために: これを行うためのジョブを設定できることはわかっていますcron
が、Django にこの機能を提供する機能があるかどうか知りたいです。多くの設定をせずに (できればゼロで)、ユーザーが自分でこのアプリを展開できるようにしたいと思います。
サイトにリクエストが最後に送信されてからジョブが実行されるべきだったかどうかを単純にチェックすることによって、これらのアクションを「遡及的に」トリガーすることを検討しましたが、もう少しクリーンなものを期待しています。
ベストアンサー1
私が採用した解決策の 1 つは、次のとおりです。
1) 作成するカスタム管理コマンド例えば
python manage.py my_cool_command
2) cron
(Linux の場合) またはat
(Windows の場合) を使用して、必要なタイミングでコマンドを実行します。
これは、重い AMQP スタックをインストールする必要のないシンプルなソリューションです。ただし、他の回答で言及されているように、Celery のようなものを使用することには優れた利点があります。特に、Celery を使用すると、アプリケーション ロジックを crontab ファイルに分散する必要がないのは便利です。ただし、cron ソリューションは、小規模から中規模のアプリケーションや、外部依存関係をあまり必要としないアプリケーションでは非常にうまく機能します。
編集:
このコマンドは、Windows 8、Server 2012 以降では非推奨です。同じ用途にat
使用できます。schtasks.exe
**** 更新 **** これは新しいリンクカスタム管理コマンドを書くためのDjangoドキュメント