10

Celery の起動時に起動する必要があるタスクがあります。このタスクは、次にコールバック / eta を通じて 5 分ごとに実行されます。

私はそれについていくつかのスレッドを見つけましたが、Celery 3で動作するように見えるものは何もありません.

助けてくれてありがとう、アルノー。

4

2 に答える 2

19

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, ...)

今では魔法のように機能します!

于 2013-01-29T18:12:17.753 に答える
0

設定で定義する必要があります:

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

于 2013-01-29T11:01:53.437 に答える