栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Celery任务中保存对象后,Django匹配查询不存在

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Celery任务中保存对象后,Django匹配查询不存在

您可以通过在您的django视图中添加延迟来确认是否是滞后问题,以在任务成功完成几秒钟后等待。如果这样可以解决问题,则可能需要将handle_upload包装在一个事务中以阻塞,直到数据库完全确认返回之前已完成。

除了Django外,DB也有自己的缓存。当django调用queryset时,它会从自己的缓存中获取陈旧数据(除非您正在重新使用查询集(除非在您发布的代码部分中没有看到),否则不太可能),或者数据库正在为同一Django连接缓存结果。

例如,如果您要在一个完全新的Django请求/视图中完成celery任务后调用后处理,您可能会看到DB中的新更改就好了。但是,由于在执行任务时视图被阻塞(这与celery
btw的目的背道而驰),因此内部django仅在进入视图时保留数据库的快照。因此,您的获取失败,您仅在进入django shell时就直接确认了此行为。

您可以通过以下任一方法来解决此问题:

  • 调用将刷新快照的事务管理
  • 更改数据库端点缓存和自动提交策略
  • 一旦celery完成处理以结束处理(使celery回调到django(Web请求)),无论如何,这都是您想要做的,因为阻止django破坏了目标)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号