gpt4 book ai didi

django - 为数据库中的每个 celery 任务存储一个任务 ID

转载 作者:行者123 更新时间:2023-12-04 10:26:18 24 4
gpt4 key购买 nike

我在 MySQL 中使用了 celery .我想将任务 id 作为普通整数存储在数据库或 celery 变量中 task .我怎样才能做到这一点?

最佳答案

为什么不创建一个 celery 任务模型,并将一个 celery 任务 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 数据表,并且可以读取每个任务的主键作为整数值。例如
>>> 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只读模型,因为我认为您不想篡改数据表。

更新:到你问题的最后一部分:
>>> 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>

关于django - 为数据库中的每个 celery 任务存储一个任务 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com