Celery の起動時に起動する必要があるタスクがあります。このタスクは、次にコールバック / eta を通じて 5 分ごとに実行されます。
私はそれについていくつかのスレッドを見つけましたが、Celery 3で動作するように見えるものは何もありません.
助けてくれてありがとう、アルノー。
Celery の IRC チャンネルの誰かが、「worker_ready.connect」シグナルを使用してそれを行う正しい方法を教えてくれます: http://docs.celeryproject.org/en/latest/userguide/signals.html#worker-ready
from celery.signals import worker_ready
@worker_ready.connect
def at_start(sender, **k):
with sender.app.connection() as conn:
sender.app.send_task('app.modules.task', args,connection=conn, ...)
今では魔法のように機能します!
設定で定義する必要があります:
import djcelery
djcelery.setup_loader()
CELERY_IMPORTS = ("apps.app_name.module.tasks",)
また、セロリブローカーをインストールしていない場合は、RabbitMQを使用しているブローカーをインストールする必要があります。これは、セロリのドキュメントにある使用方法の非常に優れたチュートリアルです。
http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html
そして、コマンドラインのセロリデーモンから始めます。
django-admin.py celeryd -v 2 -B -s celery -E -l INFO