Celery-Beat:ACCESS_REFUSED - 使用身份验证机制 AMQPLAIN 拒绝登录

Posted

技术标签:

【中文标题】Celery-Beat:ACCESS_REFUSED - 使用身份验证机制 AMQPLAIN 拒绝登录【英文标题】:Celery-Beat: ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN 【发布时间】:2019-04-29 05:56:42 【问题描述】:

我在 celery-beat 容器上遇到错误。

Celery-Beat 错误日志:

[2018-11-27 12:40:21,139: WARNING/MainProcess] (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile.
[2018-11-27 12:40:21,241: WARNING/MainProcess] Sentry is attempting to send 1 pending error messages
[2018-11-27 12:40:21,241: WARNING/MainProcess] Waiting up to 10 seconds
[2018-11-27 12:40:21,241: WARNING/MainProcess] Press Ctrl-C to quit
celery beat v4.0.2 (latentcall) is starting.
__    -    ... __   -        _
LocalTime -> 2018-11-27 12:40:19
Configuration ->
    . broker -> amqp://RabbitUser:**@rabbit:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 minutes (300s)

RabbitMq 日志:

=INFO REPORT==== 27-Nov-2018::12:40:19 ===
closing AMQP connection <0.308.0> (192.168.48.3:36552 -> 192.168.48.4:5672)

=INFO REPORT==== 27-Nov-2018::12:40:24 ===
accepting AMQP connection <0.313.0> (192.168.48.2:56664 -> 192.168.48.4:5672)

=ERROR REPORT==== 27-Nov-2018::12:40:24 ===
Error on AMQP connection <0.313.0> (192.168.48.2:56664 -> 192.168.48.4:5672, state: starting):
AMQPLAIN login refused: user 'RabbitUser' - invalid credentials

=INFO REPORT==== 27-Nov-2018::12:40:24 ===
closing AMQP connection <0.313.0> (192.168.48.2:56664 -> 192.168.48.4:5672)

根据日志,是不是认证错误?

当我尝试 curl 它成功连接到兔子时:

->curl -i -u RabbitUser:guest http://localhost:5672/api/whoami
  AMQP

我该如何解决这个问题?

【问题讨论】:

是的,看起来 Celery 无法针对您的 RabbitMQ 实例进行身份验证。如果没有看到更多的配置,很难说出原因。 你能告诉我一些想法,我该如何解决这个问题 【参考方案1】:

我假设您没有使用虚拟主机 rabbit 创建一个名为 RabbitUser 的 rabbitMQ 用户:

在控制台中输入:

rabbitmqctl add_user RabbitUser YOURPASSORDHERE
rabbitmqctl add_vhost rabbit
rabbitmqctl set_user_tags RabbitUser administrator
rabbitmqctl set_permissions -p rabbit RabbitUser ".*" ".*" ".*"
rabbitmqctl delete_user guest

这将使用您想要的密码创建用户RabbitUser,添加虚拟主机rabbit,设置您的用户管理员并授予您虚拟主机rabbit的权限

【讨论】:

应该提到这仅在主节点上是必需的。

以上是关于Celery-Beat:ACCESS_REFUSED - 使用身份验证机制 AMQPLAIN 拒绝登录的主要内容,如果未能解决你的问题,请参考以下文章

Django celery 和 celery-beat 守护进程脚本错误

使用 celery-beat 完成上一个任务后,如何在 5 分钟内运行任务?