3

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 オプションを通過していないため、明らかに構文も間違っている可能性があります。

4

1 に答える 1

2

新しいターミナル ウィンドウから別のプロセスを開始し、正しいディレクトリにいることを確認して、コマンド celery beat を実行します (beat キーワードの前に「--」は必要ありません)。

これで問題が解決しない場合は、celery_schedule.py ファイルの名前をceleryconfig.pyに変更し、次のように celery.py ファイルに含めます。

次に、新しいセロリ ビート プロセスを生成します: セロリ ビート

于 2014-12-09T19:14:07.230 に答える