सेलेरी का उपयोग करते समय रेडिस और रैबिटएमक्यू पसंदीदा ब्रोकर हो सकते हैं, लेकिन जब आप स्थानीय स्तर पर विकास कर रहे होते हैं तो वे ओवरकिल की तरह महसूस कर सकते हैं। सेलेरी 5.4 के दस्तावेज़ में उल्लेख है कि आप स्थानीय विकास के लिए SQLite को एक प्रयोगात्मक ब्रोकर के रूप में उपयोग कर सकते हैं। हालाँकि, जब आप सेलेरी के बैकएंड और ब्रोकर्स पेज पर जाते हैं, तो SQL का एकमात्र उल्लेख SQLAlchemy बैकएंड के लिए होता है। शुक्र है, पेज नोट करता है कि, "यह अनुभाग बैकएंड और ब्रोकरों के बारे में विस्तृत नहीं है।"
यह पोस्ट आपको दिखाएगी कि Django प्रोजेक्ट में सेलेरी के लिए SQLite ब्रोकर (या कोई SQL!) कैसे लागू किया जाए। यह पोस्ट आपको अजवाइन का उपयोग करना नहीं सिखाएगा: इसके लिए आधिकारिक अजवाइन दस्तावेज़ देखें।
इस पोस्ट के प्रयोजनों के लिए, हम मान लेंगे कि आपके पास पहले से ही सेलेरी के साथ एक मौजूदा Django प्रोजेक्ट है, जिसे सेलेरी के आधिकारिक "Django के साथ पहला कदम" गाइड के चरणों का उपयोग करके स्थापित किया गया है। सेलेरी बैकएंड आवश्यक नहीं है, लेकिन आप django-celery-results को स्थापित और कॉन्फ़िगर करने के लिए गाइड के चरणों का पालन करना चाह सकते हैं। यदि आप स्पष्ट नहीं हैं कि बैकएंड और ब्रोकर के बीच क्या अंतर है, तो मेरा लेख "सेलेरी में कार्यों, दलालों, श्रमिकों और बैकएंड को समझना" देखें।
स्रोत दस्तावेज़ के सभी लिंक प्रकाशन के समय (जुलाई, 2024) Django, Celery, और SQLAlchemy के वर्तमान संस्करणों के लिए होंगे, सिवाय इसके कि जहां स्पष्ट रूप से अन्यथा कहा गया हो। यदि आप इसे सुदूर भविष्य में पढ़ रहे हैं, तो चीज़ें बदल गई होंगी।
जबकि सेलेरी कार्यों और कतारों का प्रबंधन करती है, यह ब्रोकर के साथ संदेशों के आदान-प्रदान के लिए कोम्बू नामक एक अन्य लाइब्रेरी को सौंपती है। RabbitMQ और Redis कोम्बू के सबसे फीचर-पूर्ण ट्रांसपोर्ट (दलाल) हैं, लेकिन इसमें Amazon SQS, ZooKeeper और MongoDB के लिए वर्चुअल ट्रांसपोर्ट भी हैं।
कोम्बू के दस्तावेज़ के सुदूर कोनों में छिपा हुआ, एक SQLAlchemy ट्रांसपोर्ट मॉडल है जो PostgreSQL, MySQL और SQLite का समर्थन करता है। एक बार SQLAlchemy ब्रोकर को सेलेरी की वेबसाइट पर भी प्रलेखित किया गया था, लेकिन तब से इसे लाइब्रेरी के नए संस्करणों में दस्तावेज़ों से हटा दिया गया है। बहरहाल, यह अभी भी स्थानीय विकास के लिए काफी अच्छा काम करता है।
अपने Django ऐप में सेलेरी ब्रोकर के रूप में सीक्वल डेटाबेस का उपयोग करने के लिए, पहले SQLAlchemy इंस्टॉल करें:
pip install SQLAlchemy
अपने Django प्रोजेक्ट की सेटिंग्स.py फ़ाइल के भीतर, आप CELERY_BROKER_URL सेटिंग का उपयोग करके अपने ब्रोकर का बैकएंड सेट कर सकते हैं:
# BASE_DIR is the directory of your project's main directory. CELERY_BROKER_URL = f"sqlalchemy sqlite:////{BASE_DIR}/broker.sqlite3"
SQLAlchemy ब्रोकर यूआरएल में 3 भाग होते हैं:
मैक/यूनिक्स और विंडोज़ पर SQLite के लिए कनेक्शन स्ट्रिंग अलग-अलग हैं:
# MacOS/Unix CELERY_BROKER_URL = "sqla sqlite:////your/project/path/broker.sqlite3" # Windows CELERY_BROKER_URL = "sqla sqlite:///C:your\\project\\path\\broker.sqlite3"
आप पोस्टग्रेज़ को सेलेरी ब्रोकर के रूप में भी उपयोग कर सकते हैं, या आप MySQL को सेलेरी ब्रोकर के रूप में भी आसानी से उपयोग कर सकते हैं:
# MySQL CELERY_BROKER_URL = "sqlalchemy mysql://scott:tiger@localhost/foo" # PostgreSQL CELERY_BROKER_URL = "sqla postgresql://scott:tiger@localhost/mydatabase" # PosgreSQL connecting using pg8000 CELERY_BROKER_URL = "sqla postgresql pg8000://scott:tiger@localhost/mydatabase"
आपको MySQL या PostgreSQL से कनेक्ट करने के लिए अन्य लाइब्रेरी स्थापित करने की आवश्यकता हो सकती है, और आप जो लाइब्रेरी इंस्टॉल करते हैं वह SQLAlchemy कनेक्शन स्ट्रिंग को प्रभावित कर सकती है। अधिक विवरण के लिए SQLAlchemy डेटाबेस URL दस्तावेज़ देखें।
चाहे आप कोई भी डेटाबेस चुनें, आप ब्रोकर यूआरएल को एक पर्यावरण चर में संग्रहीत करने पर विचार कर सकते हैं ताकि विभिन्न परिवेशों में बदलाव करना आसान हो सके:
CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL")
SQLAlchemy ट्रांसपोर्ट को संभवतः प्रायोगिक माना जाता है, और इसलिए इसका उत्पादन उपयोग के लिए इरादा नहीं होगा। डेटा हानि हो सकती है, या संदेश कई बार वितरित किए जा सकते हैं। एक अधिक मजबूत ब्रोकर पर स्विच करने पर विचार करें जो सेलेरी के ब्रोकर्स और बैकएंड पेज पर सूचीबद्ध है।
उसने कहा, यह स्थानीय विकास, या छोटी साइड परियोजनाओं के लिए भी ठीक हो सकता है। लेकिन अगर भविष्य में SQLAlchemy को ब्रोकर के रूप में उपयोग करने की क्षमता समाप्त हो जाए तो मुझे आश्चर्य नहीं होगा।
सेलेरी के स्थानीय रूप से चलने के साथ, आप अपने कतार-संचालित एप्लिकेशन पर काम करना शुरू कर सकते हैं। हालाँकि, आपको इसकी स्वचालित पुनः लोडिंग की कमी घर्षण का बिंदु लग सकती है। यदि आप अपने Django एप्लिकेशन में स्वचालित अजवाइन पुनः लोडिंग सेट करना चाहते हैं, तो मेरी पोस्ट पढ़ें "कस्टम Django कमांड के साथ अजवाइन श्रमिकों को स्वचालित रूप से पुनः लोड करें।"
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3