के भीतर मल्टीथ्रेडिंग मैं एपीआई अनुरोधों से डेटा संसाधित करने के लिए RabbitMQ के साथ सेलेरी का उपयोग कर रहा हूं। प्रक्रिया इस प्रकार है:एक सेलेरी वर्कर
अनुरोध -> एपीआई -> RabbitMQ -> अजवाइन कार्यकर्ता -> लौटें
आदर्श रूप में मैं और अधिक अजवाइन कार्यकर्ताओं अंडे हैं लेकिन मैं स्मृति की कमी के द्वारा प्रतिबंधित कर रहा हूँ।
वर्तमान में, मेरी प्रक्रिया में बाधा कार्यकर्ता में पारित यूआरएल से डेटा लाने और डाउनलोड कर रही है। Roughy, प्रक्रिया इस प्रकार है:
celery_gets_job(url):
var data = fetches_url(url) # takes 0.1s to 1.0s (bottleneck)
var result = processes_data(data) # takes 0.1ss
return result
यह अस्वीकार्य है के रूप में कार्यकर्ता थोड़ी देर के लिए बंद कर दिया जाता है, जबकि URL प्राप्त करने में। मैं सूत्रण के माध्यम से इस में सुधार लाने के लिए देख रहा हूँ, लेकिन मैं अनिश्चित क्या सर्वोत्तम प्रथाओं हैं हूँ:
वहाँ एक में एक ही समय में डेटा को संसाधित करते समय आने वाले डेटा एसिंक्रोनस रूप से अजवाइन कार्यकर्ता डाउनलोड करने के लिए एक रास्ता है अलग धागा?
क्या मेरे पास अलग-अलग श्रमिकों को लाने और प्रसंस्करण करना चाहिए, संदेश के कुछ रूपों के साथ, संभवतः खरगोश एमक्यू के माध्यम से?
आप दो मल्टीप्रोसेस बनाकर सेलेरी कार्य के भीतर [मल्टीप्रोसेसिंग पाइप] (https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Pipe) जैसे कुछ का उपयोग करने पर विचार कर सकते हैं। अपने मल्टीप्रोसेसिंग प्रक्रियाओं को पूल द्वारा प्रतिबंधित किया जाना चाहिए। खरगोश/परिणाम बैकएंड पर यूआरएल का बड़ा डेटा साझा करना अच्छा नहीं होगा अगर मैं गलत नहीं हूं। सेलेरी निम्न स्तर एपीआई में कुछ समान कार्यक्षमता भी हो सकती है। –
मुझे खरगोश एमक्यू से अवगत नहीं है, लेकिन मुझे लगता है कि मल्टीप्रोसेसिंग मल्टीथ्रेडिंग के मुकाबले आपके लिए अधिक उपयुक्त होगी क्योंकि 'celery_gets_job' में कई गैर-परमाणु संचालन हैं और यह मल्टीथ्रेडिंग का उपयोग करते समय समस्याएं पैदा करेगा। आप क्यूई का उपयोग कर सकते हैं जहां 'fetches_url (url)' चलाने वाली प्रक्रियाओं के पूल द्वारा डेटा पॉप्युलेट किया जाता है और 'process_data (डेटा)' – shrishinde
करने के लिए एक और प्रक्रिया (एसएस) यह हो सकता है कि आप जो खोज रहे हैं: http: // stackoverflow। कॉम/प्रश्न/28315657/अजवाइन-घटना-गैर-अवरुद्ध-अनुरोध – fpbhb