में सभी सेलेरी श्रमिकों/मेमोरी कैश में विश्व स्तर पर सुलभ वस्तुएं मेरे पास 1 सेलेरी कार्य और 5 श्रमिकों के साथ सुंदर मानक Django + Rabbitmq + Celery सेटअप है।Django
कार्य उसी (मैं थोड़ा सा सरल करता हूं) बड़ी फ़ाइल (~ 100 एमबी) असीमित रूप से कई रिमोट पीसी पर अपलोड करता है।
सभी मेमोरी का उपयोग करने के खर्च पर ठीक काम कर रहे हैं, क्योंकि प्रत्येक कार्य/कार्यकर्ता उस बड़ी फ़ाइल को स्मृति में अलग-अलग लोड करता है।
मैं क्या करना चाहता हूं कि किसी प्रकार का कैश, सभी कार्यों के लिए सुलभ हो, यानी केवल एक बार फ़ाइल लोड करें। लोकमैम पर आधारित Django कैशिंग सही होगा, लेकिन दस्तावेज़ीकरण की तरह कहते हैं: "प्रत्येक प्रक्रिया का अपना निजी कैश उदाहरण होगा" और मुझे इस कैश को सभी श्रमिकों के लिए सुलभ करने की आवश्यकता है।
#2129820 में वर्णित सेलेरी सिग्नल के साथ खेलने का प्रयास किया, लेकिन मुझे इसकी आवश्यकता नहीं है।
तो सवाल यह है: क्या कोई तरीका है कि मैं सेलेरी में कुछ वैश्विक परिभाषित कर सकता हूं (जैसे कि कक्षा के आधार पर कक्षा, जहां मैं फ़ाइल या smth लोड कर सकता हूं)। या क्या इस स्थिति में एक Django चाल है जिसका उपयोग मैं कर सकता हूं?
धन्यवाद।
मैंने इसके बारे में सोचा, हालांकि memcached में स्टोर करने वाला सबसे बड़ा मूल्य 1 एमबी है। –
फाइल का विभाजन क्यों नहीं करें? और यदि प्रत्येक कार्य को इस फ़ाइल के हर बिट तक पहुंच की आवश्यकता होती है तो हर बार इसे लोड करने से बचने का कोई तरीका नहीं है। –
ठीक है, मुझे उम्मीद है कि यह संभव है :)। विभाजन जटिलता में वृद्धि करेगा और मुझे लगता है कि इससे निपटने के लिए सरल तरीका होना चाहिए। –