错误111连接被拒绝(Python,芹菜,redis)

时间:2017-10-21 04:57:40

标签: python amazon-web-services redis celery

我尝试在redis中获取所有活动/预定/预留任务:

from celery.task.control import inspect
inspect_obj = inspect()
inspect_obj.active()
inspect_obj.scheduled()
inspect_obj.reserved()

但是受到如下错误列表的欢迎: 我的虚拟环境==> HubblerAPI。 我在ec2控制台上使用它

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/celery/app/control.py", line 81, in active
return self._request('dump_active', safe=safe)
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/celery/app/control.py", line 71, in _request
timeout=self.timeout, reply=True,
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/celery/app/control.py", line 316, in broadcast
limit, callback, channel=channel,
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/kombu/pidbox.py", line 283, in _broadcast
chan = channel or self.connection.default_channel
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/kombu/connection.py", line 771, in default_channel
self.connection
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/kombu/connection.py", line 756, in connection
self._connection = self._establish_connection()
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/kombu/connection.py", line 711, in _establish_connection
conn = self.transport.establish_connection()
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/kombu/transport/pyamqp.py", line 116, in establish_connection
conn = self.Connection(**opts)
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/amqp/connection.py", line 165, in __init__
self.transport = self.Transport(host, connect_timeout, ssl)
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/amqp/connection.py", line 186, in Transport
return create_transport(host, connect_timeout, ssl)
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/amqp/transport.py", line 299, in create_transport
return TCPTransport(host, connect_timeout)
File "/home/ec2-user/HubblerAPI/local/lib/python3.4/site-
packages/amqp/transport.py", line 95, in __init__
raise socket.error(last_err)
**OSError: [Errno 111] Connection refused**

我的芹菜配置文件如下:

BROKER_TRANSPORT = 'redis'
BROKER_TRANSPORT_OPTIONS = {
    'queue_name_prefix': 'dev-',
    'wait_time_seconds': 10,
    'polling_interval': 30,
    # The polling interval decides the number of seconds to sleep 
      between unsuccessful polls
    'visibility_timeout': 3600 * 5,
    # If a task is not acknowledged within the visibility_timeout, the 
      task will be redelivered to another worker and executed.
}
CELERY_MESSAGES_DB = 6
BROKER_URL = "redis://%s:%s/%s" % (AWS_REDIS_ENDPOINT, AWS_REDIS_PORT, 
              CELERY_MESSAGES_DB)

我在这里做错了,因为错误日志表明它没有使用redis代理。

2 个答案:

答案 0 :(得分:0)

看起来你的python代码无法识别你的配置,因为它试图使用RabbitMQ的ampq协议而不是配置的代理。

我建议如下

http://docs.celeryproject.org/en/latest/getting-started/brokers/redis.html

您的配置看起来类似于Celery的Django配置,但它似乎并没有使用Celery与Django。

http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-with-django

答案 1 :(得分:0)

问题是在settings.py中使用“ BROKER_URL”而不是“ CELERY_BROKER_URL”。 Celery找不到URL,并且默认使用Rabbitmq端口而不是redis端口。