2017-02-08 29 views
6

मैंने django(1.10) + celery(4.x) उसी वीएम पर तैनात किया है, rabbitmq ब्रोकर (उसी मशीन पर) के साथ। मैं एक बहु-नोड आर्किटेक्चर पर एक ही एप्लीकेशन विकसित करना चाहता हूं जैसे कि मैं केवल कई कार्यकर्ता नोड्स को दोहरा सकता हूं, और कार्यों को तेज़ी से चलाने के लिए स्केल कर सकता हूं। यहां,कई कार्यकर्ता नोड्स पर Django + सेलेरी कार्य

  1. इस आर्किटेक्चर के लिए खरगोश के साथ अजवाइन को कैसे कॉन्फ़िगर करें?
  2. अन्य कार्यकर्ता नोड्स पर, सेटअप क्या होना चाहिए?
+1

चिलारअनंद के समाधान को आपके लिए हल किया जाना चाहिए था। स्पष्टीकरण के लिए आपको कुछ और चाहिए? –

उत्तर

8

आपको एक नोड में बोरकर होना चाहिए और इसे कॉन्फ़िगर करना चाहिए ताकि अन्य नोड्स के कर्मचारी इसे एक्सेस कर सकें।

इसके लिए, आप rabbitmq पर एक नया उपयोगकर्ता/vhost बना सकते हैं।

# add new user 
sudo rabbitmqctl add_user <user> <password> 

# add new virtual host 
sudo rabbitmqctl add_vhost <vhost_name> 

# set permissions for user on vhost 
sudo rabbitmqctl set_permissions -p <vhost_name> <user> ".*" ".*" ".*" 

# restart rabbit 
sudo rabbitmqctl restart 

अन्य नोड से, आप कार्यों को कतार सकते हैं या आप बस कार्यों का उपभोग करने के कार्यकर्ताओं चला सकते हैं।

from celery import Celery 

app = Celery('tasks', backend='amqp', 
broker='amqp://<user>:<password>@<ip>/<vhost>') 

def add(x, y): 
    return x + y 

आप एक फ़ाइल (जैसे कि task.py) इस तरह है, तो आप ऊपर कार्यों add.delay का उपयोग कर सकते हैं क़तार()।

तुम भी

celery worker -A task -l info 

साथ कार्यकर्ता शुरू कर सकते हैं तुम मेरे इस सवाल का जवाब यहाँ देख कैसे run tasks on remote machines बारे में एक संक्षिप्त विचार प्राप्त कर सकते हैं। चरण-दर-चरण प्रक्रिया के लिए, आप एक पोस्ट चेकआउट कर सकते हैं जिसे मैंने on scaling celery लिखा है।

संबंधित मुद्दे