私はセロリとジャンゴ・セロリーを使用しています。私は、テストしたい定期的なタスクを定義しました。定期的なタスクをシェルから手動で実行して、コンソール出力を表示することは可能ですか?シェルから手動でセロリ周期タスクを実行するにはどうすればよいですか?
50
A
答えて
66
あなたはちょうどDjangoシェルからタスクを実行しようとしましたか?タスクの.apply
メソッドを使用して、確実にローカルで実行されるようにすることができます。
タスクがtasks
サブモジュールでDjangoのアプリmyapp
にmy_task
と呼ばれていると仮定:
$ python manage.py shell
>>> from myapp.tasks import my_task
>>> eager_result = my_task.apply()
結果インスタンスは、結果は常に熱心にしてローカルで評価されていることを除いて、通常のAsyncResult
タイプと同じAPIを持っており、 .apply()
メソッドは、タスクが完了するまで実行されません。
5
Python/Djangoシェルからタスクを実行するシェルとcelery worker
(python manage.py celery worker
)の2つのシェルを開く必要があると思います。以前の答えによると、apply()
またはapply_async()
私は非難されたコマンドを使用していないように編集しました。
+1
manage.py celerydは現在廃止予定です:http://stackoverflow.com/a/23921568/1459594 – rschwieb
ピラミッドプロジェクトではどうすればいいですか? /myprojectに=> celeryconfig.py、 setup.py、 development.py、 /ビュー/ celerytasks => mycelerytask.pyここで私は「mycelerytaskを実行したい .Now:ディレクトリ構造は次のようになります。 py '(これは定期的なタスクです)をコマンドラインから手動で実行します。手伝ってくれますか? – Workonphp
@Workonphp私は残念ながらピラミッドに精通していないので、セロリがどのようにピラミッドと統合するのか分かりません。 (上記の私の解決策はDjango固有であり、DjangoがすべてのDjangoプロジェクトディレクトリに生成する 'manage.py'スクリプトが必要です。) –