我有使用两个外部脚本的 django 应用程序。一个脚本将文件从 A 移动到 B,将 B 的值存储在数据库中 - 然后存在,它应该提交任何可能打开的事务。下一个脚本对文件的移动做出反应(使用 inotify),计算 md5sum(这显然需要时间),然后在数据库中查找一个条目,如
x = Queue.get(filename=location)
. 查看我的日志的时间戳,我 100% 确定第一个脚本在第二个脚本(实际上是一个守护进程)运行查询之前很久就完成了。有趣的是,重新启动守护程序后,事情就可以完美地工作了。
这让我相信在守护进程运行期间缓存了查询集(每次使用 inotify 检测到新文件时,我实际上运行上面显示的代码)。但是,我不想一直重新启动守护程序,而是强制查询实际使用数据库而不是缓存。
django 文档对此并没有说太多 - 但是通常 django 不用作外部 :)
提前感谢您的任何提示!
本
PS:根据请求,来自守护进程的相关部分的来源
def _get_info(self, path):
try:
obj = Queue.objects.get(filename=path)
x = obj.x
return x
except Exception, e:
self.logger.error("Error in lookup: %s" % e)
return None
每次将新文件移动到监视目录时,线程都会调用它
而第一个脚本中的代码看起来像
for f in Queue.objects.all():
if (matching_stuff_here):
f.filename = B
f.save()
sys.exit(0)