开发者

Changes in DB data not reflecting in the Django queryset in a continuously looping script

I am using Django's ORM to get newly added entries from a Db and pass them to a Messaging queue. I am doing this in an infinite while loop , The PROBLEM in every loop iteration I am getting the same queryset even when I have added/deleted/edited entries when this script is running,

The code goes like this :

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

What should I do to reflect the latest data in each iteration ?


This isn't anything to do with caching. This is to do with transactions.

A continuously-running script by default runs within a single transaction, and so will never see changes outside that transaction. You'll need to start a new transaction manually on every iteration - see the transaction documentation on how to do that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜