DB数据中的更改未反映在连续循环脚本中的Django查询集中

时间:2011-07-31 06:13:52

标签: django transactions django-queryset django-caching

我正在使用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

我应该怎样做才能反映每次迭代的最新数据?

1 个答案:

答案 0 :(得分:4)

这与缓存无关。这与交易有关。

默认情况下,连续运行的脚本在单个事务中运行,因此永远不会看到该事务之外的更改。您需要在每次迭代时手动启动新事务 - 请参阅the transaction documentation了解如何执行此操作。