6

celery.chord(...) を使用して、タスクのグループと、グループ内のすべてのタスクが完了した後に呼び出されるメソッドを作成しました。

amqp 結果バックエンドを使用しています (ただし、me​​mcached に切り替えたい)。

私の従業員は、この行を毎秒何度も何度も印刷します。この無限ループを断ち切る方法がわかりません。rabbitMQ Web インターフェイスにアクセスできますが、ID「32ba5fe4-...」のものが見つかりません。

[2013-03-22 14:18:26,896: INFO/MainProcess] Task celery.chord_unlock[32ba5fe4-918c-480f-8a78-a310c11d0c3a] retry: Retry in 1s
[2013-03-22 14:18:26,897: INFO/MainProcess] Got task from broker: celery.chord_unlock[32ba5fe4-918c-480f-8a78-a310c11d0c3a] eta:[2013-03-22 13:18:27.895123+00:00]

これはテスト環境です。データが失われることはありません。

Celery 3.0.16 を使用しています

4

3 に答える 3

4

無限ループであってはなりません。

celery.chord_unlock タスクは、chord サブタスクがマージ コールバック タスクの呼び出しを終了したかどうかを確認します。そうでない場合は、すぐに再度チェックするようにスケジュールされます。コード タスクが完了すると、これらのメッセージはログに表示されなくなります。

編集済み: chord_unlock タスクを取り消してループを停止できます

celery.control.revoke('32ba5fe4-918c-480f-8a78-a310c11d0c3a')
于 2013-03-22T17:01:13.453 に答える
1

同じ問題がありました。ループを止めるために、flowerをインストールしてから、Web インターフェイスの [タスク] メニューからタスクを取り消しました。[取り消し] ボタンは、タスクの UUID をクリックした後に表示されるタスクの詳細ページにあります。

于 2016-06-02T23:55:15.133 に答える