2012-10-22 24 views
10

मेरे पास एक छोटी सी स्क्रिप्ट है जो प्रसंस्करण के लिए कार्यों को घेरती है। यह स्क्रिप्ट उन वस्तुओं को प्राप्त करने के लिए डेटाबेस क्वेरी का भरपूर उपयोग करती है जिन्हें एनक्यूड किया जाना चाहिए। जिस मुद्दे का मैं सामना कर रहा हूं वह यह है कि जब तक स्क्रिप्ट द्वारा इसे लागू किया जाता है तो अजवाइन कार्यकर्ता कार्य को चुनना शुरू कर देते हैं। यह सही है और इस तरह से अजवाइन काम करना है, लेकिन यह अक्सर मेरी लिपि और अजवाइन श्रमिकों के बीच deadlocks की ओर जाता है।मैं सेलेरी कार्यों के निष्पादन को कैसे रोक सकता हूं?

क्या कोई तरीका है कि मैं स्क्रिप्ट से अपने सभी कार्यों को एनक्यू कर सकता हूं लेकिन स्क्रिप्ट पूरा होने तक या निश्चित समय देरी तक निष्पादन में देरी हो सकती है?

मुझे यह अजवाइन या django-अजवाइन के दस्तावेज में नहीं मिला। क्या यह संभव है?

वर्तमान में एक त्वरित सुधार के रूप में मैंने सभी वस्तुओं को एक सूची में संसाधित करने के बारे में सोचा है और जब मेरी स्क्रिप्ट सभी प्रश्नों को निष्पादित करने के लिए किया जाता है, तो मैं बस सूची में पुन: सक्रिय हो सकता हूं और कार्यों को लागू कर सकता हूं। हो सकता है कि यह इस मुद्दे को हल करे लेकिन जब आपके पास हजारों आइटम संलग्न हों, तो यह एक बुरा विचार हो सकता है।

उत्तर

1

मुझे लगता है कि आप एक विधि के लिए नहीं पूछ एक काम चलाने में देरी करने तक आपकी स्क्रिप्ट की रेस स्थिति से बचने के लिए कोशिश कर रहे हैं,।

फिर आप कोई कार्य बना सकते हैं, और उस कार्य में, अपने प्रत्येक कार्य को .apply(), not .apply_async() या .delay() के साथ कॉल करें। ताकि ये कार्य अनुक्रमिक रूप से

चलाएं
संबंधित मुद्दे