【发布时间】:2018-04-13 03:55:15
【问题描述】:
我正在使用 rabbitmq 和 celery 进行后端任务,我想使用相同的 rabbitmq 进行开发/测试,但不希望有人不小心将 celery 工人用于生产队列并将它们用于开发/测试。如果可能的话,如何保护 celery 队列不被任何也可以访问相同 rabbitmq 后端的 celery worker 访问。
【问题讨论】:
标签: rabbitmq celery django-celery
我正在使用 rabbitmq 和 celery 进行后端任务,我想使用相同的 rabbitmq 进行开发/测试,但不希望有人不小心将 celery 工人用于生产队列并将它们用于开发/测试。如果可能的话,如何保护 celery 队列不被任何也可以访问相同 rabbitmq 后端的 celery worker 访问。
【问题讨论】:
标签: rabbitmq celery django-celery
在 BROKER_TRANSPORT_OPTIONS 中保留不同的 queue_name_prefix 用于开发和测试。
BROKER_TRANSPORT_OPTIONS = {
'queue_name_prefix':'development/test',
'wait_time_seconds': 10,
'polling_interval': 30,
'visibility_timeout': 3600 * 5
}
【讨论】:
为了解决这个问题,我设置了一个 rabbitmq 虚拟主机,生产 rabbitmq 用户对其具有独占访问权限。然后,生产用户的密码与生产 django 密钥类似地存储。
RABBIT_USER = os.environ.get('TANTALUS_RABBIT_USER', 'guest')
RABBIT_PASSWORD = os.environ.get('TANTALUS_RABBIT_PASSWORD', 'guest')
RABBIT_VHOST = os.environ.get('TANTALUS_RABBIT_VHOST', '')
CELERY_BROKER_URL = 'amqp://{}:{}@1.2.3.4:5672/{}'.format(RABBIT_USER,
RABBIT_PASSWORD, RABBIT_VHOST)
可以添加一个新的兔子用户:
sudo rabbitmqctl add_user produser prodpassword
sudo rabbitmqctl set_user_tags produser administrator
sudo rabbitmqctl add_vhost prodvhost
sudo rabbitmqctl set_permissions -p prodvhost produser ".*" ".*" ".*"
【讨论】: