ACCESS_REFUSED-使用身份验证机制AMQPLAIN拒绝登录。有关详细信息,请参阅代理日志文件

Zor*_*gan 6 python django celery supervisord

尝试celery -A draft1 beat在终端上执行时出现此错误。

Traceback (most recent call last):
  File "/home/james/postr/env/lib/python3.5/site-packages/celery/apps/beat.py", line 107, in start_scheduler
    service.start()
  File "/home/james/postr/env/lib/python3.5/site-packages/celery/beat.py", line 558, in start
    interval = self.scheduler.tick()
  File "/home/james/postr/env/lib/python3.5/site-packages/celery/beat.py", line 279, in tick
    self.apply_entry(entry, producer=self.producer)
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/utils/objects.py", line 44, in __get__
    value = obj.__dict__[self.__name__] = self.__get(obj)
  File "/home/james/postr/env/lib/python3.5/site-packages/celery/beat.py", line 411, in producer
    return self.Producer(self._ensure_connected(), auto_declare=False)
  File "/home/james/postr/env/lib/python3.5/site-packages/celery/beat.py", line 395, in _ensure_connected
    _error_handler, self.app.conf.broker_connection_max_retries
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/connection.py", line 405, in ensure_connection
    callback)
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/utils/functional.py", line 333, in retry_over_time
    return fun(*args, **kwargs)
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/connection.py", line 261, in connect
    return self.connection
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/connection.py", line 802, in connection
    self._connection = self._establish_connection()
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/connection.py", line 757, in _establish_connection
    conn = self.transport.establish_connection()
  File "/home/james/postr/env/lib/python3.5/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/connection.py", line 288, in connect
    self.drain_events(timeout=self.connect_timeout)
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/connection.py", line 471, in drain_events
    while not self.blocking_read(timeout):
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/connection.py", line 477, in blocking_read
    return self.on_inbound_frame(frame)
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/method_framing.py", line 55, in on_frame
    callback(channel, method_sig, buf, None)
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/connection.py", line 481, in on_inbound_method
    method_sig, payload, content,
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/abstract_channel.py", line 128, in dispatch_method
    listener(*args)
  File "/home/james/postr/env/lib/python3.5/site-packages/amqp/connection.py", line 603, in _on_close
    (class_id, method_id), ConnectionError)
amqp.exceptions.AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile.
Run Code Online (Sandbox Code Playgroud)

我在远程Ubuntu django服务器上运行celery。

知道是什么问题吗?

这是我的代码:

设定

CELERYBEAT_SCHEDULE = {
    'post_jobs': {
        'task': 'post.tasks.post_jobs',  # the same goes in the task name
        'schedule': crontab(minute=40),
    },
    'test_post': {
        'task': 'post.tasks.test_post',
        'schedule': crontab(minute=40),
    }
}
Run Code Online (Sandbox Code Playgroud)

draft1 / celery.py

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'draft1.settings')

app = Celery("draft1", broker=CELERY_BROKER_URL)
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Run Code Online (Sandbox Code Playgroud)

post / celery.py

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'draft1.settings')

app = Celery(broker=CELERY_BROKER_URL)
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Run Code Online (Sandbox Code Playgroud)

post / tasks.py

@app.task
def test_post():
    from .models import Post
    for i in Post.objects.all():
        if i.entered_category == "test":
            i.entered_category = "not_test"
            i.save()
    return HttpResponseRedirect('/')
Run Code Online (Sandbox Code Playgroud)

postr-celery.conf

[program:postr-celery]
command=/home/james/postr/env/bin/celery -A post worker --loglevel=INFO
directory=/home/james/postr
user=james
numprocs=1
stdout_logfile=/var/log/supervisor/celery.log
stderr_logfile=/var/log/supervisor/celery.log
autostart=true
autorestart=true
startsecs=10

; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600

stopasgroup=true

; Set Celery priority higher than default (999)
; so, if rabbitmq is supervised, it will start first.
priority=1000
Run Code Online (Sandbox Code Playgroud)

我不确定是什么引发了此错误,我的芹菜最近正在工作。知道是什么问题吗?

zer*_*cog 4

SSL 功能的软件更新很可能导致该问题。我在 /var/log/rabbitmq/rabbit@host.log 文件中发现了我的问题。

就我而言,我发现了以下内容,为了解决这个问题,我必须重新安装我的rabbitmq / celery。

/lib/erlang/lib/crypto-4.2/priv/lib/crypto: 'libcrypto.so.1.0.0: 无法打开共享对象文件: 没有这样的文件

当您监控日志时,对rabbitmqctl list_users和add_users进行测试可以帮助确定您的rabbitmqctl是否安装正确。