Отказано в доступе пользователю 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 .* .* .*
и работал на меня.