您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

Go 2022/1/1 18:48:24 有297人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶