1

我正在使用 Huey 对 Django 应用程序中的对象执行一些处理操作。

@db_task()
def process_album(album: Album) -> None:
    images = album.objects.find_non_processed_images()

    for image in images:
        if album.should_pause():
            return

        process_image(album, image)

这是我希望解决的情况的简化示例。我有一个模型,它存储了需要处理Album的各种数量。Images处理操作定义在一个用@task装饰器包装的不同函数中,因此它能够同时运行(当工人数量> 1时)。

问题是如何以album.should_pause()正确的方式实施。当前的实现如下所示:

def should_pause(self):
    self.refresh_from_db()
    return self.processing_state != AlbumProcessingState.RUNNING

因此,在每次迭代中,都会查询数据库以更新模型,以确保该state字段没有更改为 以外的其他AlbumProcessingState.RUNNING值,这表明专辑处理任务应该中断。

虽然它有效,但感觉不对,因为我必须在每次迭代时从数据库中更新模型,但这些感觉可能是错误的。你怎么看?

4

0 回答 0