मैं कक्षा के तरीकों का उपयोग django-celery कार्यों के रूप में करने की कोशिश कर रहा हूं, इसे @ टास्क सजावट का उपयोग करके चिह्नित कर रहा हूं। आनंद जेहर ने पूछा, उसी स्थिति को here लिखा गया है। यह समस्या भले ही मैं इस a.foo.delay(bar)
यह कहते हैं की तरह वर्ग उदाहरण का उपयोग है इससेल्सरी कार्यों के रूप में कक्षा विधियों का उपयोग
class A:
@task
def foo(self, bar):
...
def main():
a = A()
...
# what i need
a.foo.delay(bar) # executes as celery task
a.foo(bar) # executes locally
की तरह कुछ है कि foo
जरूरतों को कम से कम दो तर्क है, जो meens कि self
सूचक छूट जाए।
अधिक जानकारी:
- मैं मॉड्यूल के लिए कक्षा परिवर्तित नहीं कर सकते क्योंकि विरासत का
- तरीके दृढ़ता से वर्ग के सदस्यों पर निर्भर कर रहे हैं, तो मैं उन्हें स्थिर
- नहीं कर सकते वर्ग को चिह्नित करने के साथ @ टास्क सजावट वाला कार्य वर्ग को एक कार्य बनाता है, और
run()
विधि से विधियों को निष्पादित करना संभव हो सकता है, कुछ तर्क के रूप में कुछ तर्क विधि चयन के लिए, लेकिन यह वही नहीं है जो मैं चाहता हूं। - वर्ग का एक उदाहरण बनाने और तरीकों के
self
तर्क के रूप में इसे पारित रास्ता मैं तरीकों पर अमल में परिवर्तन नहीं अजवाइन taks के रूप में, लेकिन जैसा कि सामान्य तरीकों (यानी परीक्षण करते हुए) - मैं कैसे पता लगाने के लिए की कोशिश की है उदाहरण के लिए मैं कन्स्ट्रक्टर से डायनामिक रूप से कार्य को पंजीकृत कर सकता हूं, लेकिन सेलेरी श्रमिकों के बीच कोड साझा करता है, इसलिए यही असंभव प्रतीत होता है।
आपकी मदद के लिए धन्यवाद!
आप इसे कैसे निष्पादित करते हैं? वही उदाहरण मेरे लिए काम करता है। – asksol
'ए = ए()' 'a.method (1,2)' या 'a.method.delay (1,2)' - परिणाम एक ही – eviltnan