Celery 无法连接到 RabbitMQ 服务器
Posted
技术标签:
【中文标题】Celery 无法连接到 RabbitMQ 服务器【英文标题】:Celery cannot connect to RabbitMQ server 【发布时间】:2021-11-20 12:14:10 【问题描述】:我正在尝试运行 celery,即使我正确设置了用户、虚拟主机并分配了适当的标签,它也无法连接到 RabbitMQ 服务器
celery -A proj worker -l info
以上命令返回错误
[2021-09-28 18:05:37,649: ERROR/MainProcess] consumer: Cannot connect to amqp://test:**@12:5672//: timed out.
Trying again in 2.00 seconds... (1/100)
我已经按如下方式初始化了 celery 应用程序
app = Celery('proj',
broker=f'amqp://test:test@12#4@localhost/test_vhost')
我认为这不起作用,因为密码 test@12#4
中包含特殊字符 @
和 #
。
如何在不更改密码的情况下使其工作。
【问题讨论】:
也许能逃脱@
?
试试app = Celery('proj', broker=fr'amqp://test:test@12#4@localhost/test_vhost')
或app = Celery('proj', broker=r'amqp://test:test@12#4@localhost/test_vhost')
@Superbman 您的建议无效
@C.Nivs 你能提供@
的转义吗,我找不到。我为#
找到的,它是%23
当我用%23
替换#
时它起作用了,我猜是#
导致字符串终止并导致问题,而不是@
。 @C.Nivs,已经用你的建议解决了,所以如果你写了一个答案,我会把它标记为这个问题的正确答案
【参考方案1】:
这个问题可以使用转义序列来解决。
问题不在于@
字符,而在于#
所以如果您的密码是test@12#4
,您可以简单地使用#
字符的转义序列,即%23
密码可以写成test@12%234
【讨论】:
【参考方案2】:抱歉,无法使用带有“@”字符的此类密码,这已经是 Celery 的一个已知问题,原因是由于 urllib3 解析功能。唯一的办法是从密码中删除这些字符。
参考请查看对应的github issuehere
【讨论】:
当我对#
(%23) 字符使用转义序列时,我设法让它工作。原来@
不是问题所在。我输入密码为test@12%234
太棒了..看起来解析中一定发生了一些更新,因为在堆栈溢出的旧问题之一中,建议使用转义序列,但它不起作用..也许你应该添加一个答案对于未来的用户...以上是关于Celery 无法连接到 RabbitMQ 服务器的主要内容,如果未能解决你的问题,请参考以下文章
RabbitMQ (beam.smp) 和高 CPU/内存负载问题
Celery sqs 尝试连接到 amqp:无法连接到 amqp://guest:**@127.0.0.1:5672//
celery + redis 无法连接到 amqp://guest:**@127.0.0.1:5672//: [Errno 111] 连接被拒绝
Flask + Celery + Redis:消费者:无法连接到 amqp://guest:**@127.0.0.1:5672//:超时
Windows 10 上的 RabbitMQ - 无法连接到 epmd:地址(无法连接到主机/端口)
创建第一个 Celery 任务 - Django。错误 - “错误/MainProcess] 消费者:无法连接到 amqp://guest:**@127.0.0.1:5672//:”