当使用相同的rabbitmq进行开发和生产时,如何保护芹菜队列

时间:2017-10-31 21:08:32

标签: rabbitmq celery django-celery

我正在使用rabbitmq和celery进行后端任务,我想使用相同的rabbitmq进行开发/测试,但是我不想让有人意外地将芹菜工人带到生产队列并将它们用于dev /测试。一个人如何保护芹菜队列不被任何能够访问相同rabbitmq后端的芹菜工人访问,如果可能的话。

2 个答案:

答案 0 :(得分:0)

在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
}

答案 1 :(得分:0)

为了解决这个问题,我已经设置了一个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 ".*" ".*" ".*"