簡體   English   中英

是否可以將模型對象連接到芹菜任務?

[英]Is it possible to connect a model object to a celery task?

我需要將芹菜任務連接到模型對象。 例如,我需要創建一個模型對象

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

我有一個task.py

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM