2017-10-31 8 views
0

나는 백엔드 태스크에 rabbitmq와 celery를 사용하고 있습니다. dev/test와 동일한 rabbitmq를 사용하고 싶습니다. 누군가 실수로 생산 대기열에 셀러리 작업자를 데려 와서 dev/test에 사용합니다. 가능하다면 동일한 rabbitmq 백엔드에도 액세스 할 수있는 셀러리 작업자가 샐러리 대기열에 액세스하는 것을 어떻게 방지 할 수 있습니까?dev와 production에 동일한 rabbitmq를 사용할 때 셀러 큐를 어떻게 보호합니까?

답변

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 
} 
+0

예 그러나 – andrew

+0

queue_name_prefix을 테스트 할 때 실수로 생산 접두사를 추가 할 수 있습니다 누군가가 호스트로 전달 될 수있다 (에서 gethostname()) 또는 환경에 따라 다른 변수. worker는 queue_name_prefix에서만 작업을 식별하고 queue_name_prefix는 사용자가 요청한 바로 그 목적을 위해 사용됩니다. 나는 다른 대안을 모른다. – daemon24

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 ".*" ".*" ".*" 
관련 문제