Отказано в доступе пользователю rabbitmq & celery

создаю vhost:

rabbitmqctl add_vhost test

пользователь:

rabbitmqctl add_user user 123456

затем я беру разрешения для этого пользователя:

rabbitmqctl set_permissions -p test user "test" "test" "test"

Я использую сельдерей, в tasks.py:

app = Celery('tasks', broker='amqp://user:123456@localhost/test', backend='amqp://user:123456@localhost/test')

тогда я бегу:

celery -A tasks worker --loglevel=info

у меня ошибка:

amqp.exceptions.AccessRefused: Exchange.declare: (403) ACCESS_REFUSED - access to exchange 'celeryev' in vhost 'test' refused for user 'user'

как исправить?

спасибо!

3 ответов


взгляните на set_permissions здесь:https://www.rabbitmq.com/man/rabbitmqctl.1.man.html#Access%20control

при вызове set_permissions вы проходите "тест" для настройки, чтения и записи, поэтому ваш пользователь сможет использовать только очередь/обмен по имени "тест"

кроме того, взгляните на эту ссылку:https://www.rabbitmq.com/access-control.html


Если у вас все еще есть ошибка, пожалуйста, проверьте, что у вас есть правильные двойные кавычки (случилось со мной)

".*"

вместо

“.*”

чтобы быть уверенным, список разрешений от пользователей в вашем vhostpath (по умолчанию /)

rabbitmqctl list_permissions -p /  

как Lexsoul упомянул двойные кавычки могут быть неправильного типа, например:

sudo rabbitmqctl list_permissions -p EDO_DEVELOPING
*Listing permissions in vhost "EDO_DEVELOPING" ...
billing “.*”    “.*”    “.*”

и не получилось, поэтому я попробовал:

sudo rabbitmqctl clear_permissions -p EDO_DEVELOPING billing
Clearing permissions for user "billing" in vhost "EDO_DEVELOPING" ...

sudo rabbitmqctl set_permissions -p EDO_DEVELOPING billing ".*" ".*" ".*"
Setting permissions for user "billing" in vhost "EDO_DEVELOPING" ...

затем

sudo rabbitmqctl list_permissions -p EDO_DEVELOPING 
Listing permissions in vhost "EDO_DEVELOPING" ...
billing .*  .*  .*

и работал на меня.