के अजवाइन कार्य को सूचित करें मैं अजगर 2.4.1 का उपयोग कर पाइथन 2.6, खरगोश बैकएंड और डीजेंगो के साथ कर रहा हूं। यदि कार्यकर्ता बंद हो जाता है तो मैं अपने काम को ठीक से साफ करने में सक्षम होना चाहता हूं। जहां तक मुझे पता है कि आप एक कार्य विनाशक की आपूर्ति नहीं कर सकते हैं इसलिए मैंने worker_shutdown सिग्नल में हुकिंग करने की कोशिश की।कर्मचारी शटडाउन
नोट: AbortableTask केवल डेटाबेस बैकएंड के साथ काम करता है, इसलिए मैं इसका उपयोग नहीं कर सकता।
from celery.signals import worker_shutdown
@task
def mytask(*args)
obj = DoStuff()
def shutdown_hook(*args):
print "Worker shutting down"
# cleanup nicely
obj.stop()
worker_shutdown.connect(shutdown_hook)
# blocking call that monitors a network connection
obj.stuff()
हालांकि, बंद हुक कभी नहीं कहा जाता हो जाता है। कार्यकर्ता को Ctrl-Cing करना कार्य को मार नहीं देता है और मुझे इसे खोल से मैन्युअल रूप से मारना होगा।
तो यदि यह इसके बारे में जाने का उचित तरीका नहीं है, तो मैं कार्यों को शानदार तरीके से बंद करने की अनुमति कैसे दूं?
कोई भी विचार कैसे काम सूचित करने के लिए कार्यकर्ता से रोकने के लिए:
पूल कर्मी को सफाई कदम प्रक्रियाओं आप कुछ की तरह उपयोग कर सकते हैं जोड़ने के लिए? –
@RomanPodlinov - '' रद्द करने() '' के लिए सेलेरी दस्तावेज़ों को देखें - आप वैकल्पिक रूप से एक सिग्नल भेज सकते हैं जिसे कर्मचारी साफ करने के लिए पकड़ सकता है। – RichVel
मुझे यह नहीं मिला। क्या '-सॉफ्ट-टाइम-सीमा' खत्म होने के बाद उत्सर्जित होने वाला कोई सिग्नल है? यदि हां, तो कौन सा? –