定期的なタスクの実行
これまでに何を試したか、またはsettings.py
ファイルがどのように見えるかはわかりませんが、djcelery にスケジュールされたタスクを実行させる方法をいくつか示します。
1)tasks.py
で、タスクを作成し、celery.decorators.periodic_task
デコレータを使用します。例えば
from celery.task.schedules import crontab
from celery.decorators import periodic_task
@periodic_task(run_every=crontab(hour=”*”, minute=”*”, day_of_week=”*”))
def a_periodic_task():
print “Hello World!”
また
@celery.decorators.periodic_task(run_every=datetime.timedelta(minutes=5))
def a_periodic_task():
print “Hello World!”
2)celery.conf
ファイルでは、次のCELERYBEAT_SCHEDULE
ように設定を使用します。
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
"runs-every-30-seconds": {
"task": "tasks.add",
"schedule": timedelta(seconds=30),
"args": (16, 16)
},
}
詳細については、定期的なタスクのドキュメントを参照してください。
ただし、次の方法でセロリをビートモードで開始する必要があることに注意してください。
python manage.py celeryd -B
また、追加や実行を含むすべてのインストール手順djcelery
を完了したことを確認してください(または南を使用している場合)INSTALLED_APPS
python manage.py syncdb
python manage.py migrate djcelery
展開
セロリのドキュメントには、デプロイ用のセロリ プロセスのデーモン化に関する優れたセクションがあり、ビート モードの django 設定の例が含まれています。
ドキュメントから:
# Where the Django project is.
CELERYBEAT_CHDIR="/opt/Project/"
# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings"
# Path to celerybeat
CELERYBEAT="/opt/Project/manage.py celerybeat"
# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"