Celery: couldn't connect with rabbit

Using a rabbit as a broker for celery. Error while running command

celery -A proj worker   --loglevel=info

      

Celery console shows it

[2017-06-23 07:57:09,261: ERROR/MainProcess] consumer: Cannot connect to amqp://bruce:**@127.0.0.1:5672//: timed out.
Trying again in 2.00 seconds...

[2017-06-23 07:57:15,285: ERROR/MainProcess] consumer: Cannot connect to amqp://bruce:**@127.0.0.1:5672//: timed out.
Trying again in 4.00 seconds...

      

followed by logs from rabbitmq

=ERROR REPORT==== 23-Jun-2017::13:28:58 ===
closing AMQP connection <0.18756.0> (127.0.0.1:58424 -> 127.0.0.1:5672):
{handshake_timeout,frame_header}

=INFO REPORT==== 23-Jun-2017::13:29:04 ===
accepting AMQP connection <0.18897.0> (127.0.0.1:58425 -> 127.0.0.1:5672)

=ERROR REPORT==== 23-Jun-2017::13:29:14 ===
closing AMQP connection <0.18897.0> (127.0.0.1:58425 -> 127.0.0.1:5672):
{handshake_timeout,frame_header}

=INFO REPORT==== 23-Jun-2017::13:29:22 ===
accepting AMQP connection <0.19054.0> (127.0.0.1:58426 -> 127.0.0.1:5672)

      

Any input would be appreciated.

+3


source to share


2 answers


I know his deceased

But I ran into the same problem today, took almost an hour to find the exact fix. Thought it might help someone else.

I used celery 4.1.0 version

Hopefully you have configured RabbitMQ correctly, if you have not configured it as stated at http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#setting-up-rabbitmq

Also check if the broker url is correct. Here is the syntax for url brocker AMQP: // user_name password @ local / host_name

You may not need to provide a port number as it will automatically select the default

If you follow the same variables from the installation guide link above your Brocker url it looks like AMQP: // MyUser: mypassword @ local / myvhost

Follow this project structure

Project
  ../app
  ../Project
     ../settings.py
     ../celery.py
     ../tasks.py
     ../celery_config.py

      



celery_config.py

# - - - - - - - - - -
# BROKER SETTINGS
# - - - - - - - - - -
# BROKER_URL = os.environ['APP_BROKER_URL']
BROKER_HEARTBEAT = 10
BROKER_HEARTBEAT_CHECKRATE = 2.0

# Setting BROKER_POOL_LIMIT to None disables pooling
# Disabling pooling causes open/close connections for every task.
# However, the rabbitMQ cluster being behind an Elastic Load Balancer,
# the pooling is not working correctly,
# and the connection is lost at some point.
# There seems no other way around it for the time being.
BROKER_POOL_LIMIT = None

BROKER_TRANSPORT_OPTIONS = {'confirm_publish': True}

BROKER_CONNECTION_TIMEOUT = 20
BROKER_CONNECTION_RETRY = True
BROKER_CONNECTION_MAX_RETRIES = 100

      

celery.py

from __future__ import absolute_import, unicode_literals
from celery import Celery

from Project import celery_config

app = Celery('Project',
            broker='amqp://myuser:mypassword@localhost/myvhost',
            backend='amqp://',
            include=['Project'])

# Optional configuration, see the application user guide.
# app.conf.update(
#     result_expires=3600,
#     CELERY_BROKER_POOL_LIMIT = None,
# )

app.config_from_object(celery_config)

if __name__ == '__main__':
    app.start()

      

tasks.py

 from __future__ import absolute_import, unicode_literals
 from .celery import app


 @app.task
 def add(x, y):
      return x + y

      

Then start celery with "celery - Project worker -l info" from the project directory

Everything will be fine.

+1


source


set CELERY_BROKER_POOL_LIMIT = None in settings.py



0


source







All Articles