djangoの定期タスクが繰り返し実行される場合、どのように解決すればよいですか?
Djangoで、定期的なタスクを繰り返し実行するためにCeleryライブラリを使用することができます。Celeryは分散タスクキューであり、バックグラウンドで非同期にタスクを実行することができます。
Celeryを使用して定期的なタスクを実装する簡単な例を以下に示します。
- Celeryをインストールするには、まずCeleryライブラリをインストールする必要があります。Celeryをインストールするにはpipを使用できます。
pip install celery
- Celeryのインスタンスを作成する:Djangoプロジェクト内にcelery.pyファイルを作成して、Celeryのインスタンスを構成します。
from celery import Celery
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
app = Celery('your_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
- タスクの作成:Djangoアプリケーション内にtasks.pyファイルを作成し、実行する必要があるタスクを定義します。
from celery import shared_task
@shared_task
def my_task():
# 你的任务逻辑
- Celeryワーカーを起動するには、プロジェクトのルートディレクトリで以下のコマンドを実行してください。
celery -A your_project worker --loglevel=info
- Celeryのスケジューラーを使用して、タスクの実行時間を設定することができます。たとえば、celery.pyファイルに以下のコードを追加することができます。
from celery.schedules import crontab
app.conf.beat_schedule = {
'my-task': {
'task': 'your_app.tasks.my_task',
'schedule': crontab(hour=0, minute=0), # 每天凌晨执行任务
},
}
Celeryライブラリを使用してタイマータスクを実装する簡単な例を示しました。Celeryのスケジューラーを使うと、タスクの実行時間を設定し、指定した時間間隔や時間にタスクを繰り返し実行させることができます。