मैंने MySQL
के साथ अजवाइन का उपयोग किया है। मैं टास्क आईडी को डेटाबेस में एक सादे पूर्णांक के रूप में या सेलेरी task
के चर के रूप में स्टोर करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?डेटाबेस में प्रत्येक सेलेरी कार्य के लिए एक कार्य आईडी संग्रहीत करना
उत्तर
क्यों एक सेलेरी कार्य मॉडल नहीं बनाते हैं, और उस मॉडल में एक सेलेरी कार्य आईडी सहेजते हैं?
class CeleryModel(models.Model):
celery_task_id = models.CharField(max_length = 50, unique=True)
तब:
def some_celery_task():
result = celery_task.delay()
celery_task = CeleryModel(celery_task_id = result.id)
celery_task.save() # added save line
आपका पूर्णांक मान तो होगा: celery_task.id
वास्तविक, अद्वितीय celery_task_id उसके तदनुरूप।
अद्यतन: एक और तरीका है ...
पहले python manage.py inspectdb > inspectdb.py
। उस फ़ाइल के अंदर आप पाएंगे:
class CeleryTaskmeta(models.Model):
id = models.IntegerField(primary_key=True)
task_id = models.CharField(max_length=765, unique=True)
status = models.CharField(max_length=150)
result = models.TextField(blank=True)
date_done = models.DateTimeField()
traceback = models.TextField(blank=True)
hidden = models.IntegerField()
meta = models.TextField(blank=True)
class Meta:
db_table = u'celery_taskmeta'
अगला, python manage.py startapp celery_model
। इस फ़ाइल को models.py फ़ाइल में रखें। मैं दक्षिण का उपयोग करता हूं, इसलिए मेरा अंतिम चरण python manage.py convert_app celery_model
होगा। हालांकि, यह अनावश्यक है। अब आपके पास इस सेलेरी डेटाटेबल तक django स्तर तक पहुंच है, और प्रत्येक कार्य के लिए प्राथमिक कुंजी को आपके पूर्णांक मान के रूप में पढ़ सकता है। उदा
>>> ct = CeleryTaskmeta.objects.get(id=1)
>>> for k,v in ct.__dict__.items(): print k,v
...
status SUCCESS
task_id 2fa95f24-7640-434c-9fef-0732ac1d23c7
date_done 2013-02-17 19:22:56+00:00
traceback None
_state <django.db.models.base.ModelState object at 0x10263fa90>
meta eJxrYKotZAzlSM7IzEkpSs0rZIotZC7WAwBREgb9
result gAJLBC4=
hidden 0
id 1
किसी चतुर पता होगा कि कैसे अपनी CeleryTaskmeta
केवल पढ़ने के लिए मॉडल बनाने के लिए क्योंकि मुझे नहीं लगता कि आप datatable के साथ छेड़छाड़ करना चाहेंगे है।
अद्यतन: अपने प्रश्न के अंतिम भाग के लिए:
>>> from celerytest.tasks import add
>>> result = add.delay()
>>> result.int_id = 1
>>> for k,v in result.__dict__.items(): print k,v
...
parent None
app <Celery default:0x10264df10>
task_name celerytest.tasks.add
int_id 1
id 01503afd-d196-47af-8e10-e7dc06603cfc
backend <djcelery.backends.database.DatabaseBackend object at 0x1026842d0>
अजवाइन कार्य आईडी प्राप्त करने के लिए जब काम शुरू कर दिया है मैं निम्न कार्य करें:
process_task = my_task.apply_async(args=[args])
task_id = process_task.task_id
जहां my_task भीतर एक विधि है functions.py
- 1. सेलेरी - वर्तमान कार्य के लिए कार्य आईडी प्राप्त करें
- 2. सेलेरी कार्य को पूर्ववत करना
- 3. सेलेरी कार्य श्रृंखला रद्द करना?
- 4. कार्य कारखाने का उपयोग करके प्रत्येक कार्य के कार्य पूर्ण होने का समय संग्रहीत करना
- 5. सेलेरी में कार्य/आवधिक कार्य हटाएं
- 6. सबक्लासिंग सेलेरी कार्य
- 7. सेलेरी कार्य प्रोफाइलिंग
- 8. सेलेरी - किसी अन्य कार्य के अंत में अनुसूची आवधिक कार्य
- 9. एक सेलेरी कार्य में grpc टाइमआउट
- 10. एक सेलेरी कार्य में Django के ORM का उपयोग
- 11. सेलेरी कार्य को कैसे सुनिश्चित किया जा सकता है सेलेरी कार्य निष्पादन ओवरलैपिंग रोक रहा है
- 12. डीजेगो और सेलेरी के उदाहरण: आवधिक कार्य
- 13. सेलेरी कार्य पर उलटी गिनती रीसेट करें
- 14. सेलेरी: एकाधिक तर्कों के साथ चेनिंग कार्य
- 15. ईटी के साथ सेलेरी कार्य खरगोश एमक्यू
- 16. सेलेरी को पुनः प्रयास करना विफल रहा कार्य जो चेन
- 17. अजवाइन कार्यकर्ता को पुनरारंभ करने के लिए पायथन सेलेरी कार्य
- 18. कई कार्यकर्ता नोड्स पर Django + सेलेरी कार्य
- 19. कार्य शेड्यूलर के साथ समस्या एक कार्य लॉन्च करना
- 20. एक सेलेरी कार्य से डुप्लिकेट अपवाद लॉगिंग को कैसे रोकें
- 21. डेटाबेस: पाइपलाइन कार्य
- 22. EF6: डेटाबेस प्रथम कार्य
- 23. मैं सी # से सेलेरी के लिए एक कार्य कतार कैसे कर सकता हूं?
- 24. डेटाबेस में पुस्तकें संग्रहीत करना
- 25. Wunderlist कार्य मैं एक सूची के लिए कार्य php
- 26. आप एक सेलेरी कार्य का परीक्षण कैसे करते हैं?
- 27. कार्य
- 28. अज्ञात कार्य से सेलेरी में 'task_id' से परिणाम प्राप्त करें
- 29. एक एमएसएसक्यूएल डेटाबेस में जेएसओएन संग्रहीत करना?
- 30. एक ग्रैडल कार्य में एसक्यूएल निष्पादित करना?
पूरी तरह से और साफ स्पष्टीकरण के लिए धन्यवाद! – pynovice
समस्या यह है कि प्रक्रिया शुरू होने के बाद मैं task_id को पुनर्प्राप्त करना चाहता हूं। यह पता चला है कि नौकरी सफलतापूर्वक पूर्ण होने के बाद ही डेटा CeleryTaskMeta तालिका में लिखा गया है। – pynovice
@Cole डेटाबेस में एसिंक्रोनस स्क्रैप से परिणाम कैसे संग्रहीत करते हैं? – losee