我編寫了一個異步電子郵件服務,它使用Celery和RabbitMQ作爲我們的Flask應用程序。所以我在一臺服務器上運行rabbitmq - 我創建了一個用戶vhost並設置了權限。我爲端口5672創建了一個入站TCP規則。它的出站規則對所有人開放。我在另一個ec2實例上有芹菜應用程序。這個安全性也非常相似。在我設立芹菜/ supervisord之前 - 我嘗試啓動芹菜工作者。不幸的是,它給了我錯誤。芹菜工(在遠程ec2上)無法與rabbitmq通信(在另一個ec2上)
這是芹菜配置:
celery = Celery('myapp.celery',
broker = 'amqp://user:[email protected]: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://來賓:來賓@兔子:5672 // SSL = 1 - 我得到的錯誤
consumer: Cannot connect to amqp://[email protected]:5672//: [Errno -2] Name or service not known.
所以它絕對連接問題,我不知道如何解決
我似乎你缺少一個'/'。 Url應該是'amqp:// cel_host' – Lycha
第二個'/'是rabbitmq的默認虛擬主機。所以如果我使用不同的虛擬主機,我不需要第二個'/' – user2216194