2017-10-31 20 views
0

私はrabbitmqとセロリをバックエンドタスクに使用していますが、dev/testと同じrabbitmqを使用したいと思いますが、誰かが誤って製造待ち行列のためにセロリの労働者を出し、dev/testのためにそれらを使用します。可能であれば、同じrabbitmqバックエンドにもアクセスできるセロリのワーカーが、セロリのキューにアクセスするのを防ぐ方法を教えてください。デベロッパーとプロダクションに同じ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())として渡すことができ、生産接頭辞を追加したり、環境によって異なる他の変数。作業者は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 ".*" ".*" ".*" 
関連する問題