我使用的 Django 数据库模型来自一个未从 HTTP 请求调用的进程。这个过程应该每隔几秒钟轮询一次新数据,并对其进行一些处理。我有一个休眠几秒钟的循环,然后从数据库中获取所有未处理的数据。
我看到的是,在第一次获取之后,进程从未看到任何新数据。我运行了一些测试,看起来 Django 正在缓存结果,尽管我每次都在构建新的 QuerySet。为了验证这一点,我使用了 Python shell:
>>> MyModel.objects.count()
885
# (Here I added some more data from another process.)
>>> MyModel.objects.count()
885
>>> MyModel.objects.update()
0
>>> MyModel.objects.count()
1025
如您所见,添加新数据不会改变结果计数。但是,调用经理的 update ()方法似乎可以解决这个问题。
我找不到关于 update ()方法的任何文档,也不知道它还会做什么坏事。
我的问题是,为什么我会看到这种缓存行为,它与 姜戈医生的说法相矛盾?我该怎么阻止这种事发生呢?