我使用芹菜MySQL
。我想將任務ID作爲普通整數存儲在數據庫或芹菜變量task
中。我怎樣才能做到這一點?在數據庫中存儲每個芹菜任務的任務ID
6
A
回答
12
爲什麼不創建芹菜任務模型,並將芹菜任務ID保存到該模型?
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級別訪問該celery數據表,並且可以將每個任務的主鍵作爲整數值讀取。 E.g
>>> 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
只讀模式,因爲我不認爲你會想用數據表篡改。
UPDATE:你的問題的最後一部分:
>>> 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>
0
要獲得芹菜任務ID的任務時,開始我做到以下幾點:
process_task = my_task.apply_async(args=[args])
task_id = process_task.task_id
其中my_task距離的方法tasks.py
相關問題
- 1. 芹菜任務
- 2. 芹菜任務
- 3. 任務中的芹菜任務
- 4. 芹菜任務instanciation緩存
- 5. 獲取芹菜每個任務日誌
- 6. 獲取芹菜中計劃任務的任務ID
- 7. 在DB-Django中保存芹菜任務
- 8. 芹菜鏈任務
- 9. 推芹菜任務
- 10. 芹菜 - 獲取當前任務的任務ID
- 11. 芹菜 - 如何記錄父任務ID?
- 12. Djcelery:如何芹菜任務狀態保存到數據庫
- 13. 芹菜任務的屬性
- 14. Python芹菜 - 如何在其他任務中調用芹菜任務
- 15. 芹菜的消息格式是每個任務還是每個任務的呼叫ID?
- 16. 芹菜任務更新兩個數據庫
- 17. 如何從先前的芹菜任務中產生芹菜任務?
- 18. 如何在芹菜中的任務組之後排列任務?
- 19. Django芹菜任務記錄
- 20. 芹菜任務更新
- 21. Heroku芹菜背景任務
- 22. 芹菜任務鏈取消?
- 23. unittest芹菜任務assertRaises
- 24. 子類化芹菜任務
- 25. 芹菜任務消失
- 26. 去抖芹菜任務?
- 27. 芹菜任務不執行
- 28. 慢芹菜任務時間
- 29. 芹菜任務剖析
- 30. 芹菜任務計劃
謝謝你徹底和清晰的解釋! – pynovice 2013-03-05 06:34:28
問題是我想在進程啓動時檢索task_id。原來數據只有在作業成功完成後才寫入CeleryTaskMeta表中。 – pynovice 2013-03-09 05:54:56
@Cole你如何在數據庫中存儲異步擦除的結果? – losee 2016-09-11 03:09:06