2012-03-06 14 views
8

मुझे उलटी गिनती के बाद एक अजवाइन कार्य चलाने की आवश्यकता है, लेकिन कुछ शर्तों के तहत उस उलटी गिनती को रीसेट करने में सक्षम होना चाहिए। उदाहरण के लिए, मैं apply_async को countdown=15 के साथ कॉल करना चाहता हूं, लेकिन यदि कार्य निष्पादित होने से पहले कुछ घटना होती है, तो मैं उस उलटी गिनती को 15 सेकंड में फिर से सेट करना चाहता हूं।सेलेरी कार्य पर उलटी गिनती रीसेट करें

दस्तावेज़ों और गुगलिंग से मुझे लगता है कि मैं कार्य आईडी को सहेजकर इसे पूरा कर सकता हूं, और फिर घटना होने पर कार्य को पुन: प्रयास और पुनर्निर्माण कर सकता हूं। मैं सोच रहा था कि इसके लिए एक और अधिक सुरुचिपूर्ण दृष्टिकोण है या नहीं।

उत्तर

1

उलटी गिनती सेट करने के बजाय क्या आप इस कार्य को रद्द नहीं कर सकते हैं और एक नया बना सकते हैं?

+1

ठीक है जैसा कि मैंने कहा था कि मैं दस्तावेज पढ़ने के बाद आया था, लेकिन उस समय यह सही महसूस नहीं हुआ था इसलिए मैं सोच रहा था कि ऐसा करने का कोई और तरीका है या नहीं। –

0

कुछ लॉक कुंजी स्टोर करने के लिए रेडिस जैसे कुछ कैश का उपयोग करें। जब आप कुंजी के apply_async वृद्धि मूल्य को कॉल करते हैं। जब आप इस कार्य को अजवाइन में निष्पादित करते हैं - इस मान को कम करें। यदि मान 0 है - कार्य निष्पादित करें। तो यदि apply_async की दो कॉलें थीं तो आपका काउंटर 2 होगा और कार्य का पहला निष्पादन छोड़ दिया जाएगा।

मुझे लगता है कि this code can help you

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

  • कोई संबंधित समस्या नहीं^_^