6

セロリ タスクが完了したら、モデル オブジェクトを更新したいと考えています。私は現在、これを行う方法について途方に暮れています。

ここにファイルのレイアウトがあります

models.py

from photos.tasks import photo_download

class Photo(models.Model):
    ....fields....


@receiver(post_save)
def download_photo_callback(sender, **kwargs):
    photo = kwargs["instance"]
    result = photo_download.delay(photo.uid)

タスク.py

from photo.models import Photo

@task()
def photo_download(photo_uid, callback=None):
    ...do stuff...
    photo.status = 'D'
    photo.save()
4

3 に答える 3

4

循環インポートを行っています。あなたのtasks.pyファイルはあなたのファイルをインポートしてmodels.pyおり、その逆も同様です。これを回避するには、シグナルを別のsignals.pyファイルに移動する必要があります。

于 2012-04-24T21:30:32.777 に答える
1

ドキュメントに例があります:

http://docs.celeryproject.org/en/latest/userguide/tasks.html#example

spam_filter タスクを参照してください:

http://docs.celeryproject.org/en/latest/userguide/tasks.html#blog-tasks-py

于 2012-04-24T20:32:49.140 に答える
0

モデルを簡単に更新できるように、反対側に Django の設定を読み取らせます。

于 2012-04-24T20:31:55.927 に答える