2012-10-16 26 views
6

セロリの接続がエラーメッセージとともに、定期的にリセットされます:セロリエラー「ピアによる接続リセット」

現在
[Errno 104] Connection reset by peer 

、私は、サーバーをリセットするまで、その後トリガタスクと何かを失います。私は2つの質問があります:(1)エラーの原因/どうすればそれを防ぐことができますか? (2)エラーが発生したときにそのエラーをキャッチしてタスクを再試行するにはどうすればよいですか?

私はHerokuで動作しています。 Celeryは、ブローカーとしてAMQP(CloudAMQP)、結果のバックエンドとしてredis(REDIS_TO_GO)で構成されています。

スタックトレース:

File "celery/task/trace.py", line 224, in trace_task 
    R = retval = fun(*args, **kwargs) 
File "myapp/tasks.py", line 310, in mytask1 
    mytask2.delay(message) 
File "celery/app/task.py", line 343, in delay 
    return self.apply_async(args, kwargs) 
File "celery/app/task.py", line 458, in apply_async 
    with app.producer_or_acquire(producer) as P: 
File "python2.7/contextlib.py", line 17, in __enter__ 
    return self.gen.next() 
File "celery/app/base.py", line 256, in producer_or_acquire 
    with self.amqp.producer_pool.acquire(block=True) as producer: 
File "kombu/connection.py", line 712, in acquire 
    R = self.prepare(R) 
File "kombu/pools.py", line 57, in prepare 
    p.revive(connection.default_channel) 
File "kombu/connection.py", line 626, in default_channel 
    self._default_channel = self.channel() 
File "kombu/connection.py", line 167, in channel 
    chan = self.transport.create_channel(self.connection) 
File "kombu/transport/amqplib.py", line 324, in create_channel 
    return connection.channel() 
File "kombu/transport/amqplib.py", line 243, in channel 
    return Channel(self, channel_id) 
File "kombu/transport/amqplib.py", line 267, in __init__ 
    super(Channel, self).__init__(*args, **kwargs) 
File "amqplib/client_0_8/channel.py", line 82, in __init__ 
    self._x_open() 
File "amqplib/client_0_8/channel.py", line 469, in _x_open 
    self._send_method((20, 10), args) 
File "amqplib/client_0_8/abstract_channel.py", line 76, in _send_method 
    method_sig, args, content) 
File "amqplib/client_0_8/method_framing.py", line 252, in write_method 
    self.dest.write_frame(1, channel, payload) 
File "amqplib/client_0_8/transport.py", line 165, in write_frame 
    frame_type, channel, size, payload, 0xce)) 
File "python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 

バージョン:

Django==1.4.1 
django-celery==3.0.9 
celery==3.0.9 
celery-with-redis==3.0 
amqplib==1.0.2 
kombu==2.4.7 
+0

「ピアによる接続リセットは」私の理解では、ニンジンがされています[ニンジン]は(https://github.com/ask/carrot)あなたの悩み – dokkaebi

+0

を与えているように聞こえますkombuに置き換えられました。 kombuさんが問題を引き起こしている可能性がありますか? – Mike

+0

私は非常によく似た設定で同じ問題を抱えています。 –

答えて

2

あなたが接続が不足しているように見えます。 CloudAMQPコンソール開いている接続を確認することができます。

たぶんセロリを見てみましょうBROKER_POOL_LIMIT

+0

'BROKER_POOL_LIMIT = None'を設定すると助けになりました。ありがとう。 – Stanislav

関連する問題