是否可以将模型对象连接到芹菜任务



我需要将芹菜任务连接到模型对象。例如,我需要创建模型的对象

class AuthorPrice(models.Model):
    author = models.Charfield(default=0)
    price = models.FloatField(default=0)

我有一个任务

app = Celery()
@app.task
def create():
    new = AuthorPrice.object.create()
    new.author = John
    new.price = 30
    new.save()

我在查看中调用任务

create.apply_async(eta.datetime(2019, 07, 31, 15, 56))

到目前为止,一切都还好但是,如果我需要撤销或编辑此任务,则可以像外国键一样在我的模型上连接它?

ty

编辑1:

假设我在今天下午15:30发送队列任务,我告诉它创建一个模型对象。

之后,我需要在该模型对象中编辑某些内容,而任务的时间不再15:30,而是16:30 ...

现在我的模型是:

class AuthorPrice(models.Model):
    author = models.Charfield(default=0)
    price = models.FloatField(default=0)
    task = models.Charfield(default=0)

我的任务是:

@app.task(bind=True)
def create(self):
    print app.AsyncResult.task_id
    new = AuthorPrice.objects.create()
    new.author = 'John'
    new.task = app.AsyncResult.task_id
    new.save()

它在db中写入task_id someThign,例如

<property object at 0x7fc77a397b50>

,但是如果我需要撤销它,那就不起作用了...

我的目标是在某个地方备份task_id并在更改任务本身中的某些内容时撤销它。

有什么想法?

您可以将任务的ID设置为您喜欢的任何内容,并使用此ID在处理之前撤销该任务

import uuid
task_id = uuid.uuid4()
create.apply_async(task_id=task_id)
some_data_storage.set(key, task_id)

当您想撤销时

task_id = some_date_storage.get(key)
AsyncResult(task_id).revoke()

相关内容

  • 没有找到相关文章

最新更新