我正在使用Django的ORM从Db中获取新添加的条目并将它们传递给Messaging队列。我在无限循环中执行此操作,每次循环迭代中的问题我得到相同的查询集,即使我在此脚本运行时添加/删除/编辑了条目,
代码如下:
while True :
sleep(10 seconds)
# Below is the problem line, I get the same query-set every time in new_objects
# even when I have added/deleted/edited entries while this daemon is running.
new_objects = Model.objects.filter(some condition)
# Process new_objects and send them to MQ
.
. and so on
我应该怎样做才能反映每次迭代的最新数据?
答案 0 :(得分:4)
这与缓存无关。这与交易有关。
默认情况下,连续运行的脚本在单个事务中运行,因此永远不会看到该事务之外的更改。您需要在每次迭代时手动启动新事务 - 请参阅the transaction documentation了解如何执行此操作。