セロリとジャンゴセロリを使用しています。テストしたい定期的なタスクを定義しました。コンソール出力を表示するために、シェルから定期タスクを手動で実行することは可能ですか?
Djangoシェルからタスクを実行するだけですか?タスクの_.apply
_メソッドを使用して、確実にローカルで実行されるようにすることができます。
タスクが_my_task
_ in Django app myapp
in tasks
サブモジュールと呼ばれる場合:
_$ python manage.py Shell
>>> from myapp.tasks import my_task
>>> eager_result = my_task.apply()
_
結果インスタンスは通常のAsyncResult
タイプと同じAPIを持ちますが、結果は常に熱心にローカルで評価され、.apply()
メソッドはタスクが完了するまでブロックされることを除きます。
条件が満たされていないときにタスクをトリガーするだけの場合、たとえば、定期的な時間が満たされない場合。 2つの手順で実行できます。
1。タスクIDを取得する
入力することでできます。
celery inspect registered
app.tasks.update_something
のようなものが表示されます。何もない場合、おそらくcelery
が開始されていない可能性があります。実行するだけです。
2。celery call
でタスクを実行します
celery call app.tasks.update_something
詳細については、単に入力します
celery --help
celery inspect --help
celery call --help
Python/Djangoシェルからタスクを実行するシェルと、_celery worker
_(_python manage.py celery worker
_)を実行するシェルの2つのシェルを開く必要があると思います。前の回答で述べたように、apply()
またはapply_async()
を使用してタスクを実行できます
非推奨のコマンドを使用しないように、回答を編集しました。