我正在使用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
decorator包装,因此它可以并发运行(当工作进程数大于1时)
问题是如何以正确的方式在中实现album.should_pause()
。当前的实现如下所示:
def should_pause(self):
self.refresh_from_db()
return self.processing_state != AlbumProcessingState.RUNNING
因此,在每次迭代中,都会查询数据库以更新模型,以确保state
字段不会更改为AlbumProcessingState.RUNNING
以外的内容,这将指示相册处理任务应该中断
虽然它可以工作,但感觉是错误的,因为我必须在每次迭代时从数据库更新模型,但是这些感觉可能是错误的。你觉得怎么样
目前没有回答
相关问题 更多 >
编程相关推荐