私はRabbitMQ 3.1.5でCelery 3.0.23を使用するDjango 1.5.1 webappを持っています。そしてsqlite3。
シンプルな を使用してジョブを送信できますresult = status.tasks.mymethod.delay(parameter)
。すべてのタスクが正しく実行されます。
[2013-09-30 17:04:11,369: INFO/MainProcess] Got task from broker: status.tasks.prova[a22bf0b9-0d5b-4ce5-967a-750f679f40be]
[2013-09-30 17:04:11,566: INFO/MainProcess] Task status.tasks.mymethod[a22bf0b9-0d5b-4ce5-967a-750f679f40be] succeeded in 0.194540023804s: u'Done'
提出された最新の 10 件のジョブとそのステータスをページに表示したいと考えています。Django でそのようなオブジェクトを取得する方法はありますか? データベース (celery_taskmeta
および) にいくつかのテーブルがあり、オブジェクトへのアクセスをcelery_taskmeta_2ff6b945
試みましたが、Django は常にページを表示します。
DjangoからCeleryの結果にアクセスする正しい方法は何ですか?
やっているAttributeError
cel = celery.status.tasks.get(None)
cel = status.tasks.all()
は機能せず、前述の AttributeError が発生します。(status
私のアプリの名前です)
編集:この小さなチュートリアルが言うように、タスクが保存されていると確信しています:
デフォルトでは、django-celeryはこの状態をDjangoデータベースに保存します。別の結果バックエンドを選択するか、状態をすべて無効にすることを検討してください (結果バックエンドを参照してください)。
リンクをたどると、DB 接続をセットアップする方法に関する参照のみがあり、結果を取得する方法はありません。