Python 芹菜工作者(在远程ec2上)无法与rabbitmq(在另一个ec2上)通信

Python 芹菜工作者(在远程ec2上)无法与rabbitmq(在另一个ec2上)通信,python,amazon-ec2,rabbitmq,celery,Python,Amazon Ec2,Rabbitmq,Celery,我编写了一个异步电子邮件服务,它将芹菜和RabbitMQ用于Flask应用程序。因此,我在一台服务器上运行rabbitmq—我创建了一个用户vhost并设置了权限。我为端口5672创建了入站TCP规则。它的出站规则对所有人开放。我在另一个ec2实例上有芹菜应用程序。这个的安全性也非常相似。在我建立芹菜厂/主管之前,我试着启动芹菜工人。但不幸的是,它给了我错误 这是芹菜配置: celery = Celery('myapp.celery', broker = 'amqp:/

我编写了一个异步电子邮件服务,它将芹菜和RabbitMQ用于Flask应用程序。因此,我在一台服务器上运行rabbitmq—我创建了一个用户vhost并设置了权限。我为端口5672创建了入站TCP规则。它的出站规则对所有人开放。我在另一个ec2实例上有芹菜应用程序。这个的安全性也非常相似。在我建立芹菜厂/主管之前,我试着启动芹菜工人。但不幸的是,它给了我错误

这是芹菜配置:

celery = Celery('myapp.celery', 
            broker = 'amqp://user:password@rabbit:5672/cel_host',
            backend = 'amqp:/cel_host',
            include = 'myapp.tasks')
这是相关的回溯:

File "/usr/local/lib/python2.7/dist-packages/celery/backends/__init__.py", line 56, in get_backend_by_url
return get_backend_cls(backend, loader), url
File "/usr/local/lib/python2.7/dist-packages/celery/utils/functional.py", line 133, in _M
value = fun(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/celery/backends/__init__.py", line 45, in get_backend_cls
return symbol_by_name(backend, aliases)
File "/usr/local/lib/python2.7/dist-packages/kombu/utils/__init__.py", line 84, in symbol_by_name
return getattr(module, cls_name) if cls_name else module
AttributeError
:
'module' object has no attribute '/cel_host'
*cel_主机是RabbitMQ的vhost

当我在本地机器上工作时,一切正常。我们将非常感谢您的帮助

**这两个实例都位于我们专有网络中的一个专用子网中

编辑: 当我将broker_url更改为amqp://guest:guest@rabbit:5672/?ssl=1-我得到了错误

consumer: Cannot connect to amqp://guest@rabbit:5672//: [Errno -2] Name or service not known.

因此,我不确定如何解决连接问题,最终我发现了问题所在,这是我自己的一个愚蠢错误。broker_url设置正常,但后端设置不正常

url-amqp://的第一部分用于固定的传输。它是尾随的“/”可以被另一个vhost替换

broker = 'amqp://<my_app:password>@<hostname>:5672/<vhost>',
            backend = 'amqp://<vhost>'

从某种意义上说,莱卡,你是对的

我看你少了一个。Url应该是amqp://cel_hostThe 第二个“/”是rabbitmq的默认虚拟主机。因此,如果我使用不同的vhost,我不需要第二个“/”