【问题标题】:Celery cannot connect to RabbitMQ serverCelery 无法连接到 RabbitMQ 服务器
【发布时间】: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,已经用你的建议解决了,所以如果你写了一个答案,我会把它标记为这个问题的正确答案

标签: python django rabbitmq celery django-celery


【解决方案1】:

这个问题可以使用转义序列来解决。

问题不在于@ 字符,而在于#

所以如果您的密码是test@12#4,您可以简单地使用# 字符的转义序列,即%23

密码可以写成test@12%234

【讨论】:

    【解决方案2】:

    抱歉,无法使用带有“@”字符的此类密码,这已经是 Celery 的一个已知问题,原因是由于 urllib3 解析功能。唯一的办法是从密码中删除这些字符。

    参考请查看对应的github issuehere

    【讨论】:

    • 当我对# (%23) 字符使用转义序列时,我设法让它工作。原来@ 不是问题所在。我输入密码为test@12%234
    • 太棒了..看起来解析中一定发生了一些更新,因为在堆栈溢出的旧问题之一中,建议使用转义序列,但它不起作用..也许你应该添加一个答案对于未来的用户...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多