Windows 7でCelery Beatを使用して定期的なタスクを設定するのに本当に苦労しています(残念ながら、それが現在対処していることです)。セロリを使用するアプリは CherryPy で作成されているため、Django ライブラリはここでは関係ありません。私が探しているのは、Celery Beat Process をバックグラウンドで開始する方法の簡単な例です。FAQセクションには次のように書かれていますが、実際にはまだできていません:
ウィンドウズ
worker への -B / –beat オプションが機能しない?¶
答え: そうです。代わりに、セロリ ビートとセロリ ワーカーを別のサービスとして実行します。
私のプロジェクトのレイアウトは次のとおりです。
proj/
__init__.py (empty)
celery.py
celery_schedule.py
celery_settings.py (these work
tasks.py
セロリ.py:
from __future__ import absolute_import
from celery import Celery
from proj import celery_settings
from proj import celery_schedule
app = Celery(
'proj',
broker=celery_settings.BROKER_URL,
backend=celery_settings.CELERY_RESULT_BACKEND,
include=['proj.tasks']
)
# Optional configuration, see the application user guide.
app.conf.update(
CELERY_TASK_RESULT_EXPIRES=3600,
CELERYBEAT_SCHEDULE=celery_schedule.CELERYBEAT_SCHEDULE
)
if __name__ == '__main__':
app.start()
タスク.py
from __future__ import absolute_import
from proj.celery import app
@app.task
def add(x, y):
return x + y
celery_schedule.py
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=3),
'args': (16, 16)
},
}
コマンド ラインから ("proj" の親ディレクトリから) "celery worker --app=proj -l info" を実行すると、ワーカー スレッドが正常に開始され、Python ターミナルから追加タスクを実行できます。ただ、ビートサービスの起動方法がわかりません。欠落している --beat オプションを通過していないため、明らかに構文も間違っている可能性があります。