6

celeryconfig.pyでCELERY_RESULT_BACKEND="amqp"を設定しましたが、次のようになります。

>>> from tasks import add
>>> result = add.delay(3,5)
>>> result.ready()

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 105, in ready
    return self.state in self.backend.READY_STATES
  File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 184, in state
    return self.backend.get_status(self.task_id)
  File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/backends/base.py", line 414, in _is_disabled
    raise NotImplementedError("No result backend configured.  "
NotImplementedError: No result backend configured.  Please see the documentation for more information.
4

3 に答える 3

12

私はこれを通り抜けたので、これに光を当てることができます。これのいくつかがもう少し明白だったであろうと述べているすばらしいドキュメンテーションのすべてについて考えるかもしれません。

RabbitMQが稼働していて(実行されている必要があります)、dj-celeryがインストールされていることを前提としています。

それができたら、setting.pyファイルにこの1行を含めるだけです。

BROKER_URL = "amqp://guest:guest@localhost:5672//"

次に、syncdbを実行し、次を使用してこのことを開始する必要があります。

python manage.py celeryd -E -B --loglevel=info

-Eイベントをキャプチャする状態と、celerybeats-Bを実行する状態。前者を使用すると、管理ウィンドウに実際に何かを表示でき、後者を使用すると、スケジュールを設定できます。最後に、実際にイベントとステータスをキャプチャすることを確認する必要があります。したがって、別のターミナルでこれを実行します。

./manage.py celerycam

そして最後に、ドキュメントで提供されている実際の例を見ることができます。-ここでも、タスクを作成したと仮定します。

>>> result = add.delay(4, 4)
>>> result.ready() # returns True if the task has finished processing.
False
>>> result.result # task is not ready, so no return value yet.
None
>>> result.get()   # Waits until the task is done and returns the retval.
8
>>> result.result # direct access to result, doesn't re-raise errors.
8
>>> result.successful() # returns True if the task didn't end in failure.
True

さらに、管理パネルで自分のステータスを表示できます。

Djangoタスクマネージャー

これがお役に立てば幸いです!! 私を助けてくれたものをもう1つ追加します。 django-celeryが実際にRabbitMQと通信していることを特定するのに役立つため、RabbitMQログファイルを監視することが重要でした。

于 2012-05-26T14:24:29.933 に答える
1

djangoセロリを実行していますか?

その場合は、django(または専門用語)のコンテキストでPythonシェルを起動する必要があります。

タイプ:

python manage.py shell

そして、そのシェルからコマンドを試してください

于 2012-05-26T04:53:15.293 に答える
0

HIはDjango1.8バージョンでセロリv3.1.25を動作させるためにすべてを試しましたが、何も動作しませんでした。

app = Celery('documents',backend="celery.backends.amqp:AMQPBackend")
Setting backend="celery.backends.amqp:AMQPBackend"  fixed my error.
于 2018-03-26T15:50:47.943 に答える