首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:在usign storage.save()之后知道文件何时已经保存

Django:在usign storage.save()之后知道文件何时已经保存
EN

Stack Overflow用户
提问于 2016-08-01 21:15:12
回答 1查看 44关注 0票数 0

所以我有一个有FileField的Django模型。此FileField通常包含一个图像。收到来自请求的图片后,我需要运行一些图片分析过程。

问题是,有时,我需要在运行分析之前旋转图片(在celery中运行,再次加载模型,通过id获取实例)。因此,我得到图片,旋转它,并使用以下命令保存:

storage.save(image_name,new_image_file),其中存储是django的默认存储(使用亚马逊S3)

问题是在某些较小的情况下(假设千分之一),在执行旋转过程之后,在celery中运行分析过程时,图片并没有旋转,但是在那之后,如果我打开图像,图片已经旋转了,所以似乎save方法花费了一些时间来更新存储中的文件,(异步)...

有没有人遇到过类似的问题?有没有一种方法可以检查文件是否已经更新,比如使用回调或某种处理程序?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-08-01 22:18:35

这里没有神奇的解决方案。您必须管理模型上的状态,特别是在处理芹菜任务时。您可能需要另一个名为state的字段,其状态为:NONE (未完成任何操作)、PROCESSING (任务已发送到celery进行处理)和DONE (图像已旋转)

NONE是默认状态。您应该在调用celery任务之前设置POCESSING状态(并且不在celery任务内部,因此已经有bug),最后,celery任务应该在完成时将状态设置为DONE。

当任务执行速度较快时,用户看不到任何差异,但当需要一段时间时,您可能想要添加一条消息“图像正在处理中,请重试”或类似的内容

至少我是这么做的..。希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38699927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档