2017-01-17 16 views
0

セロリ4>periodic_taskデコレータは推奨されていません。今推奨されているのは、セロリを初期化する場所(私が見つけたものに基づいて、docs)にあるすべての定期的なタスクを定義することです。セロリ(django)で定期的なタスクをアプリケーション内に追加

私のdjangoの設定では、私は小さなアプリをたくさん持っていて、セットアップの中心的な場所を持つタスクはそれをしません。

私はまだセロリの周りを学んでいますが、私の解決策は「良い」と思います。 これを解決するにはこれが間違った方法ですか、それともperiodic_taskがなくなった別の方法ですか?

from celery.schedules import crontab 
from lib.celery_instance import app # The celery instance 

@app.task() 
def mytask(): 
    # do something... 
    return 123 

app.add_periodic_task(crontab(hour=8, minute=45), mytask.s()) 
+0

これは正常に見えますが、中央の場所に保存する方がずっと簡単です。 – Fian

+0

確かに、私は、ほとんどの場合、それらを集中管理することが理にかなっていることがわかります。しかし、このアプリケーションの場合、それはちょうど意味がありません..ありがとう! – xeor

+0

@xeor私はdjangoプロジェクトでセロリ3.1から4を更新しようとしていましたが、何らかの理由で 'auto_app_dicovery'でクラッシュしました。これを乗り越えるためにできることはありますか?あなたが助けることができるなら – kt14

答えて

0

定期的なタスクを一元的に管理するもう1つの方法は、設定を変更することです。

CELERY_BEAT_SCHEDULE = { 
    'some name': { 
     'task': 'myapp.tasks.do_something', 
     'schedule': crontab(hour=0, minute=0), 
    } 
} 
関連する問題