2012-05-03 13 views
10

मुझे आश्चर्य है कि सॉर्ल-थंबनेल और एस 3 के साथ सेलेरी कार्यों का उपयोग करने के तरीके के बारे में खोज करते समय मुझे कुछ भी दिखाई नहीं देता है, लेकिन "अजवाइन का उपयोग करें"।रिमोट स्टोरेज के साथ सॉर्ल-थंबनेल के साथ अजवाइन का उपयोग करने पर पॉइंटर्स?

समस्या: रिमोट स्टोरेज का उपयोग थंबनेल जेनरेट करते समय बड़े पैमाने पर देरी का कारण बनता है (थंबनेल इंजन कई थंबनेल वाले पेज के लिए सोचता है) जबकि थंबनेल इंजन रिमोट स्टोरेज से मूल डाउनलोड करता है, उन्हें क्रंच करता है, फिर एस 3 पर वापस अपलोड करता है।

सॉर्ल के भीतर अजवाइन कार्य स्थापित करने के लिए एक अच्छी जगह कहां है, और मुझे क्या कॉल करना चाहिए?

आपके किसी भी अनुभव/विचारों की बहुत सराहना की जाएगी।

मैं इस कार्य को देरी करने के लिए एक और अधिक उपयोगी जगह खोजने के लिए सोरल आंतरिक के चारों ओर खुदाई करना शुरू कर दूंगा, लेकिन कुछ और चीजें हैं जिनसे मैं पहले हल हो गया हूं, इसके बारे में उत्सुक हूं।

  1. तुरंत क्या छवि लौटा दिया जाता है? Sorl किसी भी तरह से बताया जाना चाहिए कि वापस छवि वापस असली थंबनेल नहीं है। जब सेलेरी कार्य खत्म करती है तो कैश को अमान्य किया जाना चाहिए।

  2. सफाई से कई थंबनेल पीढ़ी अनुरोधों को हैंडल मैं अस्थायी रूप से प्रॉक्सी कैश कि हिट सेवा कर सकते हैं रिवर्स एक nginx का उपयोग करके इस समाधान कर लिया है (केवल एक दिए गए कैश कुंजी के लिए पहले एक की जरूरत है)

अभी के लिए, जबकि बैकएंड महंगे पृष्ठों को उत्पन्न करने में समय बिताता है (एक विशाल उत्पाद ग्रिड पर विशाल पीएनजी का आकार बदलता है) लेकिन यह एक बहुत ही मैन्युअल प्रक्रिया है।

+0

http://djangosnippets.org/snippets/1562/ – jpic

+0

@jpic धन्यवाद मदद कर सकता है, लेकिन यह है कि 3 साल पुराना है - sorl पहले से ही दूरदराज के भंडार के साथ काम करता है। क्या मैं के साथ अतुल्यकालिक रूप से दूरदराज के भंडारण थंबनेल पैदा कर रहा है मदद की जरूरत है ... –

+0

@YujiTomita आप इस के साथ किसी भी प्रगति हुई है? अपनी खोजों को सुनना अच्छा होगा। – jamesc

उत्तर

3

मुझे लगता है कि आप क्या करना चाहते हैं THUMBNAIL_BACKEND एक कस्टम क्लास में सेट है जो _create_thumbnail विधि को ओवरराइड करता है। उस फ़ंक्शन में थंबनेल जेनरेट करने के बजाय, एक सेलेरी कार्य का किक जो फ़ंक्शन को दिए गए समान तर्कों के साथ _create_thumbnail को कॉल करता है। अनुरोध के दौरान थंबनेल उपलब्ध नहीं होगा, लेकिन यह पृष्ठभूमि में उत्पन्न होगा।

3

जैसा कि मुझे लगता है कि एसओएल एस 3 स्टोरेज के साथ सही ढंग से काम करता है लेकिन यह बहुत धीमा है।

मुझे विश्वास है कि आप जानते हैं कि आपको किस छवि आकार की आवश्यकता है।

छवि अपलोड होने के बाद आपको अजवाइन कार्य शुरू करना चाहिए। कार्य में आप sorl.thumbnail.default.backend.get_thumbnail(file, geometry_string, **options)

सॉर्ल एक थंबनेल उत्पन्न करेगा और इसे S3 पर अपलोड करेगा। अगली बार जब आप टेम्पलेट से एक छवि का अनुरोध करते हैं तो यह पहले से ही कैश किया गया है और अमेज़ॅन के सर्वर से सीधे

छवि संसाधित होने पर प्लेसहोल्डर थंबनेल छवि को संभालने का एक साफ तरीका है।

इसके लिए आपको सॉर्ल बैकएंड को ओवरराइड करने की आवश्यकता होगी। get_thumbnail फ़ंक्शन पर नया तर्क जोड़ें, उदा। generate=False।जब आप अजवाइन पास से इस समारोह कॉल करेंगे generate=True

और समारोह परिवर्तन में यह तर्क है, इसलिए यदि अंगूठे मौजूद नहीं है और generate यह सच है तो आप सिर्फ मानक बैकएंड तरह काम करते हैं, लेकिन अगर generate गलत है आप के साथ अपने प्लेसहोल्डर छवि वापसी की तरह पाठ "अब हम आपकी छवि को संसाधित, बाद में वापस आने के लिए" और backend._create_thumbnail न बुलाया जाए। यदि आप सोचते हैं कि थंबनेल को गलती से हटाया जा सकता है, तो आप इस मामले में एक कार्य लॉन्च कर सकते हैं।

मुझे आशा है कि इस मदद करता है

2

आप Sorlery उपयोग कर सकते हैं। यह श्रमिकों के माध्यम से थंबनेल बनाने के लिए सॉर्ल और अजवाइन को जोड़ती है। यह बहुत सावधान है कि कार्यकर्ता थ्रेड के बाहर कोई भी फाइल सिस्टम एक्सेस न करें।

थंबनेल तुरंत लौटा (कार्यकर्ता के पास मौका मिलने से पहले) को THUMBNAIL_DUMMY_SOURCE उचित प्लेसहोल्डर पर सेट करके नियंत्रित किया जा सकता है। जब तक कार्यकर्ता धागा पूरा करता

काम पहली बार थंबनेल अनुरोध किया जाता है बन जाता है, अनुवर्ती अनुरोधों डमी छवि प्रस्तुत कर रहे हैं।

+0

लंबे समय से अतिदेय टिप्पणी: यह शानदार लग रहा है। आपको बहुत - बहुत धन्यवाद! मैं जल्द ही अपनी अगली परियोजना के रूप में इसे देख लूंगा। रिमोट स्टोरेज का उपयोग करने के साथ यह बड़ी बाधा रही है .. डीजैगो पारिस्थितिक तंत्र के साथ रिमोट स्टोरेज का उपयोग करके इंजीनियरिंग चुनौतियों को जोड़ा गया है, जो ऑपरेशन बाधाओं को बनाते हैं, जो ऐप सर्वर वास्तव में स्टैंडअलोन करते हैं। –

+0

हालांकि यह एक दिलचस्प प्रयोग था, मुझे लगता है कि आपको क्लाउडिनरी या इमिक्स जैसे कुछ उपयोग करना चाहिए। – Aidan

संबंधित मुद्दे