2016-12-06 11 views
1

結果バックエンドなしで、セロリタスクが完了するのをどのように待つのですか?結果のバックエンドが使用されていない場合は両方とも.collect() and .get()が失敗します。私は仕事の結果を必要とせず、ただ完了するのを待つだけです。結果バックエンドなしでセロリタスクが完了するまで待つ

>>> add.delay(1, 2).get() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/usr/local/lib/python2.7/site-packages/celery/result.py", line 169, in get 
    no_ack=no_ack, 
    File "/usr/local/lib/python2.7/site-packages/celery/backends/base.py", line 616, in _is_disabled 
    'No result backend configured. ' 
NotImplementedError: No result backend configured. Please see the documentation for more information. 

答えて

2

タスクは、基本的に、完了したことをクライアントに伝える必要があります。

結果のバックエンドは、セカンダリがタスクステータスを通知するために使用するメカニズムです。無効になっている場合は、独自の通信メカニズムを実装する必要があります。

あなたは、店内にフラグを設定することができます(軽量のredisのような軽いもの)、タスクが共有マウントに書き込むことができます。または、タスクとクライアントの両方と通信できる軽量なWebサービスを実装できます。 。

しかし、これらのすべては、バックエンドの結果(特に最初の提案)とほとんど同じです。

関連する問題