"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Django में सेलेरी ब्रोकर के रूप में SQLite का उपयोग करें

Django में सेलेरी ब्रोकर के रूप में SQLite का उपयोग करें

2024-08-18 को प्रकाशित
ब्राउज़ करें:218

Use SQLite as a Celery broker in Django

सेलेरी का उपयोग करते समय रेडिस और रैबिटएमक्यू पसंदीदा ब्रोकर हो सकते हैं, लेकिन जब आप स्थानीय स्तर पर विकास कर रहे होते हैं तो वे ओवरकिल की तरह महसूस कर सकते हैं। सेलेरी 5.4 के दस्तावेज़ में उल्लेख है कि आप स्थानीय विकास के लिए SQLite को एक प्रयोगात्मक ब्रोकर के रूप में उपयोग कर सकते हैं। हालाँकि, जब आप सेलेरी के बैकएंड और ब्रोकर्स पेज पर जाते हैं, तो SQL का एकमात्र उल्लेख SQLAlchemy बैकएंड के लिए होता है। शुक्र है, पेज नोट करता है कि, "यह अनुभाग बैकएंड और ब्रोकरों के बारे में विस्तृत नहीं है।"

यह पोस्ट आपको दिखाएगी कि Django प्रोजेक्ट में सेलेरी के लिए SQLite ब्रोकर (या कोई SQL!) कैसे लागू किया जाए। यह पोस्ट आपको अजवाइन का उपयोग करना नहीं सिखाएगा: इसके लिए आधिकारिक अजवाइन दस्तावेज़ देखें।

इससे पहले कि हम शुरू करें

इस पोस्ट के प्रयोजनों के लिए, हम मान लेंगे कि आपके पास पहले से ही सेलेरी के साथ एक मौजूदा Django प्रोजेक्ट है, जिसे सेलेरी के आधिकारिक "Django के साथ पहला कदम" गाइड के चरणों का उपयोग करके स्थापित किया गया है। सेलेरी बैकएंड आवश्यक नहीं है, लेकिन आप django-celery-results को स्थापित और कॉन्फ़िगर करने के लिए गाइड के चरणों का पालन करना चाह सकते हैं। यदि आप स्पष्ट नहीं हैं कि बैकएंड और ब्रोकर के बीच क्या अंतर है, तो मेरा लेख "सेलेरी में कार्यों, दलालों, श्रमिकों और बैकएंड को समझना" देखें।

स्रोत दस्तावेज़ के सभी लिंक प्रकाशन के समय (जुलाई, 2024) Django, Celery, और SQLAlchemy के वर्तमान संस्करणों के लिए होंगे, सिवाय इसके कि जहां स्पष्ट रूप से अन्यथा कहा गया हो। यदि आप इसे सुदूर भविष्य में पढ़ रहे हैं, तो चीज़ें बदल गई होंगी।

SQL ब्रोकर की स्थापना

जबकि सेलेरी कार्यों और कतारों का प्रबंधन करती है, यह ब्रोकर के साथ संदेशों के आदान-प्रदान के लिए कोम्बू नामक एक अन्य लाइब्रेरी को सौंपती है। 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 भाग होते हैं:

  1. स्ट्रिंग sqlalchemy या sql (वे विनिमेय हैं)
  2. एक संकेत
  3. एक SQLAlchemy कनेक्शन स्ट्रिंग

मैक/यूनिक्स और विंडोज़ पर 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 कमांड के साथ अजवाइन श्रमिकों को स्वचालित रूप से पुनः लोड करें।"

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/tylerlwsmith/use-sqlite-as-a-celery-broker-in-django-1jne?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें। यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3