Celery: Se perdió la conexión con el corredor. Intentando restablecer la conexión ...

Creado en 23 mar. 2017  ·  40Comentarios  ·  Fuente: celery/celery

Estamos usando Django Rest Framework con MongoEngine, Redis, Celery y Kombu, y obtenemos el siguiente error en nuestros registros:

`[2017-03-22 06: 26: 01,702: WARNING / MainProcess] consumidor: Se perdió la conexión con el corredor. Intentando restablecer la conexión ...
Rastreo (llamadas recientes más última):
Archivo "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer/consumer.py", línea 318, en inicio
blueprint.start (auto)
Archivo "/usr/local/lib/python2.7/dist-packages/celery/bootsteps.py", línea 119, en inicio
step.start (padre)
Archivo "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer/consumer.py", línea 594, en inicio
c.loop ( c.loop_args ())Archivo "/usr/local/lib/python2.7/dist-packages/celery/worker/loops.py", línea 88, en asynloopsiguiente (bucle)Archivo "/usr/local/lib/python2.7/dist-packages/kombu/async/hub.py", línea 345, en create_loopcb ( cbargs)
Archivo "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", línea 1039, en on_readable
self.cycle.on_readable (fileno)
Archivo "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", línea 337, en on_readable
tipo chan.handlers
Archivo "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", línea 667, en _receive
ret.append (self._receive_one (c))
Archivo "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", línea 678, en _receive_one
respuesta = c.parse_response ()
Archivo "/usr/local/lib/python2.7/dist-packages/redis/client.py", línea 2183, en parse_response
return self._execute (conexión, conexión.read_response)
Archivo "/usr/local/lib/python2.7/dist-packages/redis/client.py", línea 2176, en _execute
comando de retorno (* args)
Archivo "/usr/local/lib/python2.7/dist-packages/redis/connection.py", línea 577, en read_response
respuesta = self._parser.read_response ()
Archivo "/usr/local/lib/python2.7/dist-packages/redis/connection.py", línea 238, en read_response
respuesta = self._buffer.readline ()
Archivo "/usr/local/lib/python2.7/dist-packages/redis/connection.py", línea 168, en readline
self._read_from_socket ()
Archivo "/usr/local/lib/python2.7/dist-packages/redis/connection.py", línea 143, en _read_from_socket
(e.args,))
ConnectionError: Error al leer desde el socket: ('Conexión cerrada por el servidor.',)

[2017-03-22 06: 26: 01,868: INFO / MainProcess] Conectado a redis: //: * * * * * * * * ** / 1

Versiones utilizadas

python == 2.7.12
redis == 3.2.3
kombu == 4.0.2
Django == 1.10.3
apio == 4.0.2
amqp == 2.1.1
billar == 3.5.0.2
pytz == 2016.7
Django == 1.10.3o

Tenemos HaProxy frente al clúster y las conexiones de Redis, todo lo demás funciona sin problemas. ¿Podría ayudarnos a solucionar este error?
¿O una guía sobre qué buscar y dónde buscar, etc.?

Realmente agradecemos tu ayuda,

Gracias,
Darsana

RabbitMQ Broker Bug Report Major Sprint Candidate

Comentario más útil

El mismo problema con el apio == 4.2.1
Cómo resuelvo esto ?

Todos 40 comentarios

@dharanpdarsana ¿Tiene redis funcionando? Así es como puede validar:

$ redis-cli                                                                
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

@ jpatel3 redis se está ejecutando y el 90% de las conexiones se realizan sin ningún problema

También (de repente) estoy experimentando un error de tubería rota.
Estaba funcionando perfectamente bien antes. Olvidé lo que instalé o hice para activar esto.

[2017-05-22 17:18:10,939: INFO/MainProcess] Connected to amqp://user123:**@192.168.99.100:5672//
[2017-05-22 17:18:10,955: INFO/MainProcess] mingle: searching for neighbors
[2017-05-22 17:18:10,965: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", line 318, in start
    blueprint.start(self)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/worker/consumer/mingle.py", line 38, in start
    self.sync(c)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/worker/consumer/mingle.py", line 42, in sync
    replies = self.send_hello(c)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/worker/consumer/mingle.py", line 55, in send_hello
    replies = inspect.hello(c.hostname, our_revoked._data) or {}
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/app/control.py", line 129, in hello
    return self._request('hello', from_node=from_node, revoked=revoked)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/app/control.py", line 81, in _request
    timeout=self.timeout, reply=True,
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/celery/app/control.py", line 436, in broadcast
    limit, callback, channel=channel,
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/pidbox.py", line 315, in _broadcast
    serializer=serializer)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/pidbox.py", line 290, in _publish
    serializer=serializer,
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/messaging.py", line 194, in _publish
    [maybe_declare(entity) for entity in declare]
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/messaging.py", line 194, in <listcomp>
    [maybe_declare(entity) for entity in declare]
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/messaging.py", line 102, in maybe_declare
    return maybe_declare(entity, self.channel, retry, **retry_policy)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/common.py", line 125, in maybe_declare
    return _maybe_declare(entity, declared, ident, channel, orig)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/common.py", line 131, in _maybe_declare
    entity.declare(channel=channel)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/kombu/entity.py", line 185, in declare
    nowait=nowait, passive=passive,
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/amqp/channel.py", line 630, in exchange_declare
    wait=None if nowait else spec.Exchange.DeclareOk,
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/amqp/abstract_channel.py", line 64, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/amqp/method_framing.py", line 174, in write_frame
    write(view[:offset])
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/amqp/transport.py", line 269, in write
    self._write(s)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/eventlet/greenio/base.py", line 397, in sendall
    tail = self.send(data, flags)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/eventlet/greenio/base.py", line 391, in send
    return self._send_loop(self.fd.send, data, flags)
  File "/Users/richmond/Projects/backend/env/lib/python3.6/site-packages/eventlet/greenio/base.py", line 378, in _send_loop
    return send_method(data, *args)
BrokenPipeError: [Errno 32] Broken pipe
[2017-05-22 17:18:11,032: INFO/MainProcess] Connected to amqp://user123:**@192.168.99.100:5672//
[2017-05-22 17:18:11,046: INFO/MainProcess] mingle: searching for neighbors
[2017-05-22 17:18:12,075: INFO/MainProcess] mingle: all alone
[2017-05-22 17:18:12,104: INFO/MainProcess] [email protected] ready.

$ pip congelar

alabaster==0.7.10
alembic==0.9.1
amqp==2.1.4
aniso8601==1.2.0
appdirs==1.4.3
argh==0.26.2
Babel==2.4.0
billiard==3.5.0.2
blinker==1.4
bumpversion==0.5.3
cached-property==1.3.0
celery==4.0.2
cffi==1.10.0
click==6.7
colorama==0.3.8
coverage==4.1
cryptography==1.7
docker==2.2.1
docker-compose==1.11.2
docker-pycreds==0.2.1
dockerpty==0.4.1
docopt==0.6.2
docutils==0.13.1
ecdsa==0.13
enum-compat==0.0.2
eventlet==0.21.0
factory-boy==2.8.1
Faker==0.7.11
flake8==2.6.0
Flask==0.12
Flask-Babel==0.11.2
Flask-Cors==3.0.2
Flask-GraphQL==1.4.0
Flask-Mail==0.9.1
Flask-Migrate==2.0.3
Flask-RESTful==0.3.5
Flask-Script==2.0.5
Flask-SocketIO==2.8.6
Flask-SQLAlchemy==2.1
future==0.16.0
graphene==1.1.3
graphene-sqlalchemy==1.1.1
graphql-core==1.1
graphql-relay==0.4.5
greenlet==0.4.12
gunicorn==19.7.1
idna==2.5
imagesize==0.7.1
inflection==0.3.1
iso8601==0.1.11
itsdangerous==0.24
Jinja2==2.9.6
jsonschema==2.6.0
kombu==4.0.2
Mako==1.0.6
MarkupSafe==1.0
mccabe==0.5.3
mod-wsgi==4.5.15
ndg-httpsclient==0.4.2
packaging==16.8
pathtools==0.1.2
pluggy==0.3.1
promise==2.0
py==1.4.33
pyasn1==0.2.3
pycodestyle==2.0.0
pycparser==2.17
pycrypto==2.6.1
pyflakes==1.2.3
Pygments==2.2.0
PyMySQL==0.7.10
pyOpenSSL==17.0.0
pyparsing==2.2.0
python-dateutil==2.6.0
python-editor==1.0.3
python-engineio==1.4.0
python-jose==1.3.2
python-socketio==1.7.4
pytz==2017.2
PyYAML==3.11
raven==5.32.0
requests==2.11.1
singledispatch==3.4.0.3
six==1.10.0
snowballstemmer==1.2.1
Sphinx==1.4.8
SQLAlchemy==1.1.5
texttable==0.8.8
tox==2.3.1
typing==3.6.1
vine==1.1.3
virtualenv==15.1.0
voluptuous==0.9.3
watchdog==0.8.3
websocket-client==0.40.0
Werkzeug==0.12.1

Tengo el mismo problema y estoy usando las mismas versiones y no puedo encontrar una solución :(

Estoy usando kombu y me encuentro con la misma situación, no estoy seguro, pero creo que tal vez sea un problema trabajar con haproxy.

Cuando se conecta a haproxy, que enruta las conexiones a varios nodos de rabbitmq, tanto los productores como los consumidores tienen el mismo problema de "conexión con el intermediario perdido", pero cuando se conectan directamente a un nodo de rabbitmq, el problema nunca ocurre.

También viendo esto, y también detrás de haproxy:

kombu==4.0.2
celery==4.0.2
redis==2.10.5

Tal vez también haya sucedido con los corredores de SQS:

boto==2.47.0
celery==4.0.2
kombu==4.0.2

El mismo problema aquí, Celery con RabbitMQ y eventlet.

amqp == 2.2.1
billar == 3.5.0.3
apio == 4.1.0
Django == 1.8.5
eventlet == 0.21.0
kombu == 4.1.0
pytz == 2017.2
vid == 1.1.4

[2017-08-10 06:35:39,629: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/celery/worker/consumer/consumer.py", line 320, in start
    blueprint.start(self)
  File "/usr/lib/python2.7/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/lib/python2.7/site-packages/celery/worker/consumer/consumer.py", line 596, in start
    c.loop(*c.loop_args())
  File "/usr/lib/python2.7/site-packages/celery/worker/loops.py", line 118, in synloop
    connection.drain_events(timeout=2.0)
  File "/usr/lib/python2.7/site-packages/kombu/connection.py", line 301, in drain_events
    return self.transport.drain_events(self.connection, **kwargs)
  File "/usr/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 103, in drain_events
    return connection.drain_events(**kwargs)
  File "/usr/lib/python2.7/site-packages/amqp/connection.py", line 485, in drain_events
    while not self.blocking_read(timeout):
  File "/usr/lib/python2.7/site-packages/amqp/connection.py", line 490, in blocking_read
    frame = self.transport.read_frame()
  File "/usr/lib/python2.7/site-packages/amqp/transport.py", line 240, in read_frame
    frame_header = read(7, True)
  File "/usr/lib/python2.7/site-packages/amqp/transport.py", line 415, in _read
    s = recv(n - len(rbuf))
  File "/usr/lib/python2.7/site-packages/eventlet/greenio/base.py", line 360, in recv
    return self._recv_loop(self.fd.recv, b'', bufsize, flags)
  File "/usr/lib/python2.7/site-packages/eventlet/greenio/base.py", line 354, in _recv_loop
    self._read_trampoline()
  File "/usr/lib/python2.7/site-packages/eventlet/greenio/base.py", line 325, in _read_trampoline
    timeout_exc=socket_timeout('timed out'))
  File "/usr/lib/python2.7/site-packages/eventlet/greenio/base.py", line 207, in _trampoline
    mark_as_closed=self._mark_as_closed)
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/__init__.py", line 163, in trampoline
    return hub.switch()
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 295, in switch
    return self.greenlet.switch()
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 347, in run
    self.wait(sleep_time)
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/poll.py", line 84, in wait
    presult = self.do_poll(seconds)
  File "/usr/lib/python2.7/site-packages/eventlet/hubs/epolls.py", line 61, in do_poll
    return self.poll.poll(seconds)
  File "/usr/lib/python2.7/site-packages/celery/apps/worker.py", line 333, in restart_worker_sig_handler
    safe_say('Restarting celery worker ({0})'.format(' '.join(sys.argv)))
  File "/usr/lib/python2.7/site-packages/celery/apps/worker.py", line 89, in safe_say
    print('\n{0}'.format(msg), file=sys.__stderr__)
IOError: [Errno 32] Broken pipe
[2017-08-10 06:35:39,820: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672//
[2017-08-10 06:35:39,940: INFO/MainProcess] mingle: searching for neighbors
[2017-08-10 06:35:40,975: INFO/MainProcess] mingle: all alone
[2017-08-10 06:35:41,115: INFO/MainProcess] pidbox: Connected to amqp://guest:**@127.0.0.1:5672//.

Tengo el mismo problema con RabbitMQ ejecutándose en localhost. Es extraño que las conexiones locales se agoten o pierdan la conexión. Tengo algunas tareas bastante intensivas y mi CPU está al 100%, pero mi uso de memoria es bajo. ¿Causaría eso conexiones caídas?

celery==4.0.2
kombu==4.0.2
Django==1.8.6
RabbitMQ==3.2.4

@chrisspen , ¿

[2017-10-11 13:34:57,244: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/usr/local/python/lib/python2.7/site-packages/celery/worker/consumer/consumer.py", line 318, in start
    blueprint.start(self)
  File "/usr/local/python/lib/python2.7/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/local/python/lib/python2.7/site-packages/celery/worker/consumer/consumer.py", line 594, in start
    c.loop(*c.loop_args())
  File "/usr/local/python/lib/python2.7/site-packages/celery/worker/loops.py", line 88, in asynloop
    next(loop)
  File "/usr/local/python/lib/python2.7/site-packages/kombu/async/hub.py", line 345, in create_loop
    cb(*cbargs)
  File "/usr/local/python/lib/python2.7/site-packages/kombu/transport/redis.py", line 1039, in on_readable
    self.cycle.on_readable(fileno)
  File "/usr/local/python/lib/python2.7/site-packages/kombu/transport/redis.py", line 337, in on_readable
    chan.handlers[type]()
  File "/usr/local/python/lib/python2.7/site-packages/kombu/transport/redis.py", line 714, in _brpop_read
    **options)
  File "/usr/local/python/lib/python2.7/site-packages/redis/client.py", line 585, in parse_response
    response = connection.read_response()
  File "/usr/local/python/lib/python2.7/site-packages/redis/connection.py", line 577, in read_response
    response = self._parser.read_response()
  File "/usr/local/python/lib/python2.7/site-packages/redis/connection.py", line 238, in read_response
    response = self._buffer.readline()
  File "/usr/local/python/lib/python2.7/site-packages/redis/connection.py", line 168, in readline
    self._read_from_socket()
  File "/usr/local/python/lib/python2.7/site-packages/redis/connection.py", line 143, in _read_from_socket
    (e.args,))
ConnectionError: Error while reading from socket: ('Connection closed by server.',)

También tuve una "Conexión con el corredor perdida" usando conejo + apio con un uso elevado de CPU; no estoy seguro está relacionado.

esto podría ser un problema con HAProxy

@auvipy lo dudo. No uso HAProxy y he estado intentando usar Celery 4.0.3 para migrar desde 3.1.25.

Sigo recibiendo este error.

Esperemos el lanzamiento de 4.2

Tengo el mismo problema con Redis ejecutándose en localhost. Mi valor de tiempo de espera de configuración de redis es 5 . Cuando se ejecutan demasiadas tareas más allá de los 5 segundos, resultaría en esta excepción:

[2018-03-28 10:13:09,557: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/usr/local/python2.7/lib/python2.7/site-packages/celery-4.2.0rc1-py2.7.egg/celery/worker/consumer/consumer.py", line 322, in start
    blueprint.start(self)
  File "/usr/local/python2.7/lib/python2.7/site-packages/celery-4.2.0rc1-py2.7.egg/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/local/python2.7/lib/python2.7/site-packages/celery-4.2.0rc1-py2.7.egg/celery/worker/consumer/consumer.py", line 598, in start
    c.loop(*c.loop_args())
  File "/usr/local/python2.7/lib/python2.7/site-packages/celery-4.2.0rc1-py2.7.egg/celery/worker/loops.py", line 91, in asynloop
    next(loop)
  File "/usr/local/python2.7/lib/python2.7/site-packages/kombu/async/hub.py", line 354, in create_loop
    cb(*cbargs)
  File "/usr/local/python2.7/lib/python2.7/site-packages/kombu/transport/redis.py", line 1040, in on_readable
    self.cycle.on_readable(fileno)
  File "/usr/local/python2.7/lib/python2.7/site-packages/kombu/transport/redis.py", line 337, in on_readable
    chan.handlers[type]()
  File "/usr/local/python2.7/lib/python2.7/site-packages/kombu/transport/redis.py", line 714, in _brpop_read
    **options)
  File "/usr/local/python2.7/lib/python2.7/site-packages/redis/client.py", line 680, in parse_response
    response = connection.read_response()
  File "/usr/local/python2.7/lib/python2.7/site-packages/redis/connection.py", line 624, in read_response
    response = self._parser.read_response()
  File "/usr/local/python2.7/lib/python2.7/site-packages/redis/connection.py", line 284, in read_response
    response = self._buffer.readline()
  File "/usr/local/python2.7/lib/python2.7/site-packages/redis/connection.py", line 216, in readline
    self._read_from_socket()
  File "/usr/local/python2.7/lib/python2.7/site-packages/redis/connection.py", line 191, in _read_from_socket
    (e.args,))
ConnectionError: Error while reading from socket: ('Connection closed by server.',)
[2018-03-28 10:13:09,558: WARNING/MainProcess] Restoring 7 unacknowledged message(s)

Y descubrí que si el argumento para la aplicación de apio es demasiado largo, como una cadena de 65000 de longitud, y la conexión entre apio y redis está cerrada y no se puede volver a conectar.
Aquí está el ejemplo:

# filename: task.py
# test for celery task
import time
from celery import Celery
app = Celery('tasks', broker='redis://:@127.0.0.1:6379/2')

@app.task
def test(data):
    time.sleep(20)

iniciar 2 apio trabajador

celery -A task worker -c 2 -l info 
# filename: test.py
# produce celery task 
from mytask import test
for i in range(40):
    test.delay('1'*65000)
 ```
run  test 
```bash
python test.py

Espere unos 2 minutos, luego ejecute este comando y no encontrará ninguna conexión entre apio y redis ESTABLECIDA.

netstat -natp | grep 6379 | grep ESTABLISHED

Indicó que las conexiones entre apio y redis se cerraron y se volvieron a conectar fallaron. Entonces, ¿qué causa las conexiones caídas y la reconexión falla?

celery-4.1.0 or celery-4.2.0rc1
kombu==4.1.0
billiard==3.5.0.3
pytz==2018.3
amqp==2.2.2
vine==1.1.4

redis 4.0.2

No sé por qué sucedió esto, pero si el tiempo de espera de redis.conf se establece en 0, los problemas desaparecerán.
Gracias.

Tengo el mismo problema con amqp broker y:
kombu == 4.2.1
apio == 4.2.0

El mismo problema con apio == 4.2.0 y kombu == 4.2.1

alguien tuvo alguna solución en la práctica?

El mismo problema con el apio == 4.2.1
Cómo resuelvo esto ?

mismo problema, estoy usando celery == 4.2.0, kombu == 4.2.0 y Rabbitmq cluster como corredor
alguna solución ?

También tengo este problema. Mis registros reciben spam constantemente debido a estas excepciones.

Lo mismo ocurre con el último apio, ¿alguna solución disponible?

Intento seguir para suprimir los registros. Me funciona bien.

  • SQS con botocore
  • Vuelva a intentarlo cuando haya error de conexión
from billiard.exceptions import (
    SoftTimeLimitExceeded as CelerySoftTimeLimitExceeded,
)
from botocore.exceptions import (
    ClientError as BotocoreClientError,
    HTTPClientError as BotocoreHTTPClientError,
)

@app.task(
    autoretry_for=(
        BotocoreClientError,
        BotocoreHTTPClientError,
        CelerySoftTimeLimitExceeded,
    ),
)
def my_task():
    pass

Hola.
Tengo el mismo problema cuando uso la versión del paquete celery 4.2.1 y amqp 2.4.0.
ahora pruebo apio 4.2.1 y amqp 2.3.2, parece bueno.
trabajar bien.
La esperanza puede ayudar a alguien que tiene el problema.

@auvipy , puedo ver que este problema se cerró, pero no estoy seguro de si hay una solución para él todavía o si hay una planeada ... Sería genial si pudiera confirmar cuál es el estado actual, gracias.

¿Podrías probar con apio y kombu del maestro e informar de nuevo?

También tengo este problema. Probé la solución de

Mismo problema,
apio 4.2.1
kombu 4.3.0
amqp 2.4.1
redis 2.10.5

Se corrigió al degradar a amqp 2.3.2 según la respuesta de @shaoeChen .

En el caso especial del clúster AWS ELB + de Rabbit MQ, esta configuración parece solucionarlo:
image

El tiempo de espera inactivo predeterminado es 60.

Mismo problema

redis == 3.2.1
apio [redis] == 4.3.0

Reiniciar el apio estará bien

prueba el apio == 4.4.0rc5

@auvipy sería bueno si hace referencia al cambio en celery==4.4.0rc5 que soluciona este problema para la posteridad.

FWIW, subir a 4.4.0rc5 parece haber estabilizado este problema para mí también.

apio == 4.4.0 es la versión estable actual. intente eso e informe de nuevo.

celery==4.4.0
kombu==4.6.7
funciona (mejor).

Gracias por hacer referencia al hito de 4.4.x

ACTUALIZACIÓN: Mientras que antes, desconectaba conexiones con frecuencia (aproximadamente cada minuto) ... ¿ahora parece estar desconectando conexiones con mucha menos frecuencia (una vez por hora)? Tendría que registrarlo y hacer un análisis de registro más profundo para obtener una señal más clara.

Estoy enfrentando el mismo problema
[2020-04-22 05:31:09,243: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection... Traceback (most recent call last): File "c:\users\administrator\code\user\cel_env\lib\site-packages\redis\connection.py", line 700, in send_packed_command sendall(self._sock, item) File "c:\users\administrator\code\user\cel_env\lib\site-packages\redis\_compat.py", line 8, in sendall return sock.sendall(*args, **kwargs) File "c:\users\administrator\code\user\cel_env\lib\site-packages\eventlet\greenio\base.py", line 403, in sendall tail = self.send(data, flags) File "c:\users\administrator\code\user\cel_env\lib\site-packages\eventlet\greenio\base.py", line 397, in send return self._send_loop(self.fd.send, data, flags) File "c:\users\administrator\code\user\cel_env\lib\site-packages\eventlet\greenio\base.py", line 384, in _send_loop return send_method(data, *args) ConnectionResetError: An existing connection was forcibly closed by the remote host

mi lista de pips
billiard==3.6.3.0 BTrees==4.4.1 celery==4.4.2 kombu==4.6.8 redis==3.4.1

Estoy enfrentando el mismo problema que se informó en https://github.com/apache/airflow/issues/11622. Esto comenzó a ocurrir después de https://github.com/apache/airflow/pull/11336

Lo interesante es que sucede solo cuando intentamos ejecutar Celery worker de manera demonizada.

celery==4.4.7
kombu==4.6.11
billiard==3.6.3.0
redis==3.5.3

FYI: Intenté actualizar a 5.0 pero no tuve éxito.

Tuve un problema similar al usar el HAproxy proporcionado por redis-ha Helm chart . Resulta que su timeout client predeterminado era 30s , y el intervalo de mantenimiento de TCP predeterminado de Redis es " aproximadamente 5 minutos ". Elevando timeout client y timeout server ambos a 330s , el problema parece haberse solucionado.

Tuve un problema similar al usar el HAproxy proporcionado por redis-ha Helm chart . Resulta que su timeout client predeterminado era 30s , y el intervalo de mantenimiento de TCP predeterminado de Redis es " aproximadamente 5 minutos ". Elevando timeout client y timeout server ambos a 330s , el problema parece haberse solucionado.

¿Deberíamos proporcionar esto en los documentos?

Bueno, no estoy seguro de si es la solución correcta, pero cambié mi instancia EC2 en Amazon en la que utilizo celery + rabbitmq + gunicorn + supervisor como parte de mi infraestructura de tareas largas (de hasta varias horas) con miles de mensajes gestionados por este 24/7 ...

... - desde 1 Gb de tamaño de memoria hasta 2 Gb (tal vez tenga diferentes necesidades, así que ajuste en consecuencia)

Como mostró el archivo syslog en Ubuntu, el error de oom estaba matando a los corredores y otras cosas, y el aumento del tamaño de la memoria del servidor ayudó a resolver esto.

Ahora mis registros están libres de errores.
Y no es necesario ajustar mi código.

Bueno, no estoy seguro de si es la solución correcta, pero cambié mi instancia EC2 en Amazon en la que utilizo celery + rabbitmq + gunicorn + supervisor como parte de mi infraestructura de tareas largas (de hasta varias horas) con miles de mensajes gestionados por este 24/7 ...

... - desde 1 Gb de tamaño de memoria hasta 2 Gb (tal vez tenga diferentes necesidades, así que ajuste en consecuencia)

Como mostró el archivo syslog en Ubuntu, el error de oom estaba matando a los corredores y otras cosas, y el aumento del tamaño de la memoria del servidor ayudó a resolver esto.

Ahora mis registros están libres de errores.
Y no es necesario ajustar mi código.

¡muy practico!

¿Fue útil esta página
0 / 5 - 0 calificaciones