Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

रीयलटाइम के लिए सेलेरी का उपयोग करना, गीवेंट के साथ सिंक्रोनस बाहरी एपीआई क्वेरी करना

मैं यथासंभव अधिक से अधिक प्रश्नों के उत्तर देने का प्रयास करूंगा।

<ब्लॉकक्वॉट>

क्या यह (और क्या यह) अजवाइन का उपयोग करके किया जा सकता है?

हाँ आप कर सकते हैं

<ब्लॉकक्वॉट>

मैं django का उपयोग कर रहा हूँ। क्या मुझे सादे अजवाइन के ऊपर django-अजवाइन का उपयोग करने का प्रयास करना चाहिए?

Django के पास अजवाइन के लिए एक अच्छा समर्थन है और विकास के दौरान जीवन को बहुत आसान बना देगा

<ब्लॉकक्वॉट>

उन कार्यों में से प्रत्येक अन्य कार्यों को जन्म दे सकता है - जैसे लॉगिंग अभी क्या हुआ या अन्य प्रकार की शाखाएं बंद हो गईं। क्या यह संभव है?

आप केवल साइड इफेक्ट के लिए ign_result =true के साथ एक कार्य से उप-कार्य शुरू कर सकते हैं

<ब्लॉकक्वॉट>

क्या कार्य उन्हें प्राप्त होने वाले डेटा को वापस कर सकते हैं - यानी सेलेरी के माध्यम से संभावित रूप से केबी डेटा (इस मामले में अंतर्निहित रेडिस) या क्या उन्हें डीबी को लिखना चाहिए, और बस उस डेटा को पॉइंटर्स पास करना चाहिए?

मैं सुझाव दूंगा कि परिणाम डीबी में डालें और फिर आईडी पास करने से आपका ब्रोकर और कर्मचारी खुश हो जाएंगे। कम डेटा ट्रांसफर/पिकलिंग इत्यादि।

<ब्लॉकक्वॉट>

प्रत्येक कार्य ज्यादातर I/O बाध्य होता है, और शुरुआत में केवल वेब थ्रेड से ईवेंट का उपयोग करने जा रहा था ताकि अनुरोधों को पूरा किया जा सके और पूरी क्यूइंग डिज़ाइन को छोड़ दिया जा सके, लेकिन यह पता चला कि इसे अलग-अलग घटक के लिए पुन:उपयोग किया जाएगा। वास्तविक समय में पूरे दौर की यात्रा को Qs के माध्यम से रखने की कोशिश करने के लिए संभवतः कई श्रमिकों को यह सुनिश्चित करने की आवश्यकता होगी कि कतार ज्यादातर खाली है। या यह है? क्या गीवेंट वर्करपूल चलाने से इससे मदद मिलेगी?

चूँकि प्रक्रिया io बाउंड है तो gevent निश्चित रूप से यहाँ मदद करेगा। हालांकि, gevent पूल'ड वर्कर के लिए कंसीडर कितना होना चाहिए, यह कुछ ऐसा है जिसका मैं भी उत्तर ढूंढ रहा हूं।

<ब्लॉकक्वॉट>

क्या मुझे gevent विशिष्ट कार्यों को लिखना है या नेटवर्क IO के साथ स्वचालित रूप से gevent पूलडील का उपयोग करना होगा?

जब आप पूल में इसका इस्तेमाल करते हैं तो गेवेंट बंदर को अपने आप पैच कर देता है। लेकिन जिन पुस्तकालयों का आप उपयोग करते हैं उन्हें गीवेंट के साथ अच्छा खेलना चाहिए। अन्यथा, यदि आप simplejson (जो c में लिखा गया है) के साथ कुछ डेटा पार्स कर रहे हैं तो वह अन्य gevent ग्रीनलेट्स को अवरुद्ध कर देगा।

<ब्लॉकक्वॉट>

क्या कुछ कार्यों को प्राथमिकता देना संभव है?

आप कुछ कार्यों के लिए विशिष्ट प्राथमिकताओं को निर्दिष्ट नहीं कर सकते हैं, लेकिन उन्हें अलग-अलग कतार में रूट कर सकते हैं और फिर उन कतारों को अलग-अलग संख्या में श्रमिकों द्वारा सुना जा सकता है। किसी विशेष कतार के लिए जितने अधिक कार्यकर्ता होंगे, उस कतार के कार्यों की प्राथमिकता उतनी ही अधिक होगी।

<ब्लॉकक्वॉट>

उन्हें क्रम में रखने के बारे में क्या?

चेन व्यवस्था बनाए रखने का एक तरीका है। कॉर्ड संक्षेप में बताने का एक अच्छा तरीका है। अजवाइन इसकी देखभाल करती है, इसलिए आपको इसके बारे में चिंता करने की जरूरत नहीं है। जीवेंट पूल का उपयोग करते समय भी, अंत में कार्यों के निष्पादन के क्रम के बारे में तर्क करना संभव होगा।

<ब्लॉकक्वॉट>

क्या मुझे अजवाइन छोड़ देनी चाहिए और सिर्फ कोम्बू का उपयोग करना चाहिए?

आप कर सकते हैं, यदि आपका उपयोग मामला समय के साथ कुछ अधिक जटिल नहीं बदलेगा और यदि आप स्वयं सेलेरीड + पर्यवेक्षक के माध्यम से अपनी प्रक्रियाओं का प्रबंधन करने के इच्छुक हैं। साथ ही, यदि आप उस कार्य निगरानी की परवाह नहीं करते हैं जो सेलेरीमोन, फूल, आदि जैसे उपकरणों के साथ आता है।

<ब्लॉकक्वॉट>

ऐसा लगता है कि अजवाइन "कार्यों" के लिए अधिक तैयार है जो स्थगित हो सकते हैं और समय के प्रति संवेदनशील नहीं हैं।

अजवाइन अनुसूचित कार्यों का भी समर्थन करता है। यदि उस कथन से आपका यही तात्पर्य था।

<ब्लॉकक्वॉट>

क्या मैं इस वास्तविक समय को बनाए रखने की कोशिश करने के लिए पागल हूँ?

मुझे ऐसा नहीं लगता। जब तक आपके उपभोक्ता पर्याप्त तेज़ हैं, यह वास्तविक समय जितना अच्छा होगा।

<ब्लॉकक्वॉट>

मुझे और किन तकनीकों पर ध्यान देना चाहिए?

सेलेरी के मामले में आपको रिजल्ट स्टोर का चुनाव सोच-समझकर करना चाहिए। मेरा सुझाव होगा कि कैसेंड्रा का उपयोग करें। यह रीयलटाइम डेटा (लिखने और क्वेरी दोनों के अनुसार) के लिए अच्छा है। आप रेडिस या मोंगोडब का भी उपयोग कर सकते हैं। वे परिणाम स्टोर के रूप में अपनी समस्याओं के सेट के साथ आते हैं। लेकिन फिर कॉन्फ़िगरेशन में थोड़ा सा बदलाव एक लंबा रास्ता तय कर सकता है।

यदि आपका मतलब अजवाइन से पूरी तरह से अलग है, तो आप इसे प्राप्त करने के लिए asyncio (python3.5) और Zeromq देख सकते हैं। हालांकि मैं इस पर अधिक टिप्पणी नहीं कर सकता।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कैशे_स्टोर को इनिशियलाइज़र में सेट करना

  2. Django Redis त्रुटि अज्ञात आदेश 'BZPOPMIN'

  3. स्प्रिंग डेटा रेडिस:रेडिस पाइपलाइन हमेशा अशक्त लौटती है

  4. रेडिस के साथ गतिशील सॉर्ट

  5. (क्लाइंट साइड) जावास्क्रिप्ट के साथ सीधे रेडिस से कनेक्ट हो रहा है?