2016-05-30 18 views
1

数日後、セロリのサービスが無期限に何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も繰り返します。これは再現するのがいくぶん難しいですが、処理されているタスクの量に応じて、週に一度、または頻繁に定期的に行われます。セロリで繰り返される作業

私はこの問題を追跡する方法がわからないので、この問題に関する詳細なデータの入手方法に関するヒントをお待ちしております。それが発生すると、セルリーを再起動すると一時的に解決されます。

私は4人のワーカー(バージョン3.1.23)で動作する1つのセロリノードを持っています。ブローカと結果のバックエンドはRedisです。私は1つのキューにのみポストしていると私はセロリのビートを使用しないでください。

Djangoのsetting.pyでconfigがある:

BROKER_URL = 'redis://localhost:6380' 
CELERY_RESULT_BACKEND = 'redis://localhost:6380' 

ログの関連部分:

[2016-05-28 10:37:21,957: INFO/MainProcess] Received task: painel.tasks.indicar_cliente[defc87bc-5dd5-4857-9e45-d2a43aeb2647] 
[2016-05-28 11:37:58,005: INFO/MainProcess] Received task: painel.tasks.indicar_cliente[defc87bc-5dd5-4857-9e45-d2a43aeb2647] 
[2016-05-28 13:37:59,147: INFO/MainProcess] Received task: painel.tasks.indicar_cliente[defc87bc-5dd5-4857-9e45-d2a43aeb2647] 
... 
[2016-05-30 09:27:47,136: INFO/MainProcess] Task painel.tasks.indicar_cliente[defc87bc-5dd5-4857-9e45-d2a43aeb2647] succeeded in 53.33468166703824s: None 
[2016-05-30 09:43:08,317: INFO/MainProcess] Task painel.tasks.indicar_cliente[defc87bc-5dd5-4857-9e45-d2a43aeb2647] succeeded in 466.0324719119817s: None 
[2016-05-30 09:57:25,550: INFO/MainProcess] Task painel.tasks.indicar_cliente[defc87bc-5dd5-4857-9e45-d2a43aeb2647] succeeded in 642.7634702899959s: None 

タスクを持つユーザーの要求によって送信されます。

tasks.indicar_cliente.delay(indicacao_db.id) 

はここですsource code of the taskおよびcelery service configurationである。

サービスが実行されている時間の後に複数回タスクが受信されるのはなぜですか?どのようにして一貫した行動を取ることができますか?

+0

誰がタスクをスケジューリングしていますか?ユーザーはトリガーしていますか? cronがトリガーされましたか?あなたはセロリのビートを使用しています。 1つのキューにのみ転記しますか? あなたのセロリの設定を貼り付けてください –

+0

@MauroRoccoタスクはユーザーのリクエストによって送信されます(スケジュールされておらず、セロリの拍子は使用しません)。私は1つのキューにのみポストしています。私はセロリの設定とタスクのソースコードを含めるように私の質問を更新しました。 – rodorgas

+0

こんにちは、これをローカルで実行し、1つのタスクのみをスケジュールすると、3つのタスクが実行されています。なぜなら、これは、通常よりもユーザーがトリガーして、各ユーザーがタスクを要求してそれを要求しているからです。 –

答えて

0

redisの代わりにrabbitmq brokerを使用して解決しました。

関連する問題