我为我们的 Flask 应用程序编写了一个使用 Celery 和 RabbitMQ 的异步电子邮件服务。所以我在一台服务器上运行了rabbitmq - 我创建了一个用户,虚拟主机并设置了权限。我为端口 5672 创建了一个入站 TCP 规则。它的出站规则对所有人开放。我在另一个 ec2 实例上有 celery 应用程序。这个的安全性也非常相似。在我设置 celeryd/supervisord 之前 - 我试图启动 celery worker。但不幸的是,它给了我错误。
这是芹菜配置:
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_host 是 RabbitMQ 的虚拟主机。
当我在本地机器上工作时,一切正常。任何帮助将不胜感激。
**两个实例都在我们 VPC 的私有子网上
编辑: 当我将 broker_url 更改为 amqp://guest:guest@rabbit:5672//?ssl=1 - 我收到错误
consumer: Cannot connect to amqp://guest@rabbit:5672//: [Errno -2] Name or service not known.
所以这绝对是连接问题,我不知道如何解决