Djangoタスクスケジューリングを使用する方法

Djangoでタスクをスケジュールするには、以下のようにします。

  1. Djangoの組み込みタスクスケジューラを使用 – Djangoには、プロジェクトで簡単に使用できる組み込みのタスクスケジューラが用意されています。最初に、settings.pyファイルに以下のコードを追加してください:
INSTALLED_APPS = [
...
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.sitemaps',
'django.contrib.admin',
'django_crontab',  # 添加此行
...
]

最後に、settings.py ファイルの末尾に以下のコードを追加します:

CRONJOBS = [
('*/15 * * * *', 'myapp.tasks.my_task'),  # 每15分钟执行一次my_task函数
]

最後に、プロジェクトのルートディレクトリで次のコマンドを実行してジョブスケジューラをインストールします。:

python manage.py crontab add
  1. サードパーティのライブラリを使用 – Djangoはタスクスケジューリングにサードパーティのライブラリを使用することもサポートしています。一般的なライブラリはCeleryです。最初にCeleryライブラリをインストールします。
pip install celery

次に、settings.pyファイルに以下のコードを追加する。

INSTALLED_APPS = [
...
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.sitemaps',
'django.contrib.admin',
'celery',  # 添加此行
...
]
CELERY_BROKER_URL = 'redis://localhost:6379'  # 设置消息代理的URL,这里使用了Redis
CELERY_RESULT_BACKEND = 'redis://localhost:6379'  # 设置任务结果的后端
CELERY_BEAT_SCHEDULE = {
'my_task': {
'task': 'myapp.tasks.my_task',  # 任务所在的函数
'schedule': 15*60,  # 每15分钟执行一次
},
}

プロジェクトのルートディレクトリで次のコマンドを実行して、Celery タスクスケジューラを起動する必要があります。

celery -A myproject worker --beat

以上で挙げたのは、Djangoでタスクスケジューリングを行うために一般的に用いられる2つの方法です。ご自身のニーズに合わせて適切な方法をお選びください。

bannerAds