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.
精彩评论