2012-01-04 13 views
11

मेरे पास एक Django साइट का एक बहुत छोटा हिस्सा है जो दो उपयोगकर्ताओं के बीच एक मध्यम चैट सत्र की स्थिति रखता है। असल में, पहला उपयोगकर्ता 3 मिनट (और कोई और नहीं कर सकता) के लिए बोलता है, फिर दूसरा उपयोगकर्ता बोलता है, फिर 30 सेकंड विराम होता है, और प्रक्रिया को एक और बार दोहराया जाता है। मैं वर्तमान में कमरे की वर्तमान स्थिति (जो बोल सकता है, आदि) का प्रबंधन करने के लिए डेटाबेस और "रूमस्टेट" मॉडल का उपयोग कर रहा हूं। क्लाइंट द्वारा राज्य संक्रमण एक "पिंग" AJAX POST संदेश को मेरे 10 विचारों में से प्रत्येक में भेजने के लिए प्रभावित होते हैं, जो जांचता है कि क्या यह राज्य बदलने का समय है।सेलरी के बिना Django में पृष्ठभूमि प्रसंस्करण

यह काम करता है, लेकिन निश्चित रूप से हैकी लगता है। मैं सोच रहा था कि क्या टाइमर पर छोटे-छोटे पृष्ठभूमि कार्यों को प्रबंधित करने के लिए django-celery + rabbitmq की तुलना में कुछ हल्का वजन था। मुझे एहसास है कि वेब/Django की प्रकृति स्टेटलेस है, लेकिन मैं सिर्फ यह देखना चाहता था कि राज्य संक्रमण को अधिक विश्वसनीय तरीके से प्रबंधित करने के लिए किसी के पास एक साधारण सुझाव था या नहीं।

+1

यदि खरगोश बहुत भारी वजन है, तो इसके बजाय रेडिस बैकएंड का उपयोग करने पर विचार करें। –

+0

कृपया चयनित उत्तर को अपडेट करने पर विचार करें। – coleifer

+0

मैं ओपी के साथ पूरी तरह से सहमत हूं जब भी हमें दो ब्रेक में से एक Django या Celery को अपग्रेड करना होगा। हम अब सिरदर्द संख्या 10 के लिए वेब स्कैन कर रहे हैं। सेलेरी में गिट हब पर 4 9 6 बकाया मुद्दे हैं और 37 बड़े पुल अनुरोध हैं जिन्हें कभी भी खींचा नहीं जा रहा है। हम सभी भरोसेमंद निर्धारित कार्य थे जो अजवाइन नहीं है। देवता अपने समय को एक और बैकएंड एकीकृत करने में बर्बाद करते हैं, कोई भी इसके बारे में sh *** देता है। –

उत्तर

14

यहां django-utils के लेखक, मैं अपने नए प्रोजेक्ट Huey को आजमाने का सुझाव देना चाहता हूं - इसमें समृद्ध फीचर सेट, बेहतर दस्तावेज़, अधिक स्थिर और किसी भी पायथन ढांचे (डीजेंगो सहित) के साथ काम करता है। Docs

7

मुझे सेलेरी का केवल एक विकल्प पता है जो अधिक हल्का है: Queue in django-utils

एक और तरीका है सीधे subprocess मॉड्यूल का उपयोग करने के लिए है, लेकिन आप शायद कुछ समस्या है कि पहले से ही अजवाइन और Django-utils में हल कर रहे हैं हल करने के लिए होगा।

+1

आप https://github.com/coleifer/huey का उपयोग करना चाहेंगे, इसके बजाय मैं अब django-utils – coleifer

+0

को बनाए रखने वाला नहीं हूं, शायद आप [Django Q] (https://github.com/Koed00/django] पर देखना चाहते हैं -q /) जो django विशिष्ट है और लेखक के बताए गए लक्ष्य वही हैं जो आप पूछ रहे हैं। एफवाईआई: मुझे कोई संबद्धता नहीं है और लेखक को नहीं पता। – eskhool

4

मैं django-background-tasks की सिफारिश करता हूं। मैंने इसे कई परियोजनाओं में उपयोग किया है और यह वास्तव में एक साधारण कार्य धावक के रूप में अच्छी तरह से करता है। Two-Scoops of Django में भी इसकी अनुशंसा की गई थी।

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