Celery documentation बताता है कि कार्यों को अन्य कार्यों के परिणामों पर इंतजार करना एक बुरा विचार है ... लेकिन सुझाया गया समाधान ("अच्छा" शीर्षक देखें) वांछित होने के लिए कुछ छोड़ देता है। विशेष रूप से, उपटस्क के परिणाम को कॉलर पर वापस लाने का कोई स्पष्ट तरीका नहीं है (यह भी, यह बदसूरत है)।पायथन + अजवाइन: नौकरी की चेनिंग?
तो, क्या "चेनिंग" नौकरियों का कोई तरीका है, इसलिए कॉलर को अंतिम नौकरी का परिणाम मिल जाता है? उदाहरण के लिए, add
उदाहरण उपयोग करने के लिए:
>>> add3 = add.subtask(args=(3,))
>>> add.delay(1, 2, callback=add3).get()
6
वैकल्पिक रूप से, यह परिणाम के उदाहरण लौटने के लिए ठीक है? उदाहरण के लिए:
@task
def add(x, y, callback=None):
result = x + y
if callback:
return subtask(callback).delay(result)
return result
यह दिया जाएगा श्रृंखला में "अंतिम" काम का परिणाम एक साधारण के साथ retrived जा सकता है:
result = add(1, 2, callback=add3).delay()
while isinstance(result, Result):
result = result.get()
print "result:", result
क्या आप प्रस्ताव ठीक काम करेगा। मुझे कोई विकल्प नहीं दिख रहा है, है ना? – asksol