2012-10-15 9 views

答えて

66

あなたはちょうどDjangoシェルからタスクを実行しようとしましたか?タスクの.applyメソッドを使用して、確実にローカルで実行されるようにすることができます。

タスクがtasksサブモジュールでDjangoのアプリmyappmy_taskと呼ばれていると仮定:

$ python manage.py shell 
>>> from myapp.tasks import my_task 
>>> eager_result = my_task.apply() 

結果インスタンスは、結果は常に熱心にしてローカルで評価されていることを除いて、通常のAsyncResultタイプと同じAPIを持っており、 .apply()メソッドは、タスクが完了するまで実行されません。

+0

ピラミッドプロジェクトではどうすればいいですか? /myprojectに=> celeryconfig.py、 setup.py、 development.py、 /ビュー/ celerytasks => mycelerytask.pyここで私は「mycelerytaskを実行したい .Now:ディレクトリ構造は次のようになります。 py '(これは定期的なタスクです)をコマンドラインから手動で実行します。手伝ってくれますか? – Workonphp

+0

@Workonphp私は残念ながらピラミッドに精通していないので、セロリがどのようにピラミッドと統合するのか分かりません。 (上記の私の解決策はDjango固有であり、DjangoがすべてのDjangoプロジェクトディレクトリに生成する 'manage.py'スクリプトが必要です。) –

5

Python/Djangoシェルからタスクを実行するシェルとcelery workerpython manage.py celery worker)の2つのシェルを開く必要があると思います。以前の答えによると、apply()またはapply_async()

私は非難されたコマンドを使用していないように編集しました。

+1

manage.py celerydは現在廃止予定です:http://stackoverflow.com/a/23921568/1459594 – rschwieb