在Python中关闭系统文件读缓冲

时间:2014-10-30 13:27:25

标签: python filesystems buffer tornado

我在Tornado上编写了我的TCP服务器,Python Web框架,每1-10秒接收一次数据。然后我需要阅读我的文件' example.txt'在每次迭代中,我以列表格式(JSON)存储数据,将我的数据与旧数据合并并再次写入文件。 有一个问题 - 一段时间后(或一些时间/一些数据量),文件开始缓存(或缓冲),因此每次我想读取它时,我都会从文件中获取不相关的数据。但文件仍然可用于编写和Python写入新的,但与非相关数据合并到文件,我可以从文件的修改时间看到它。

open('example.txt', 'r', 0) - 没有帮助 python -u - 旗帜没有帮助 PYTHONUNBUFFERED variable - 没有帮助 file.flush(), os.fsync() - 没有帮助

P.S。生产服务器正在开发CentOs。

def saveToFile(self, data, path):
        if os.path.exists(path) == True:
            with open(path, 'r', 0) as f:
                old = f.read()
            try:
                old = json.loads(old)
            except ValueError:
                old = {}
        else:
            old = {}

        data_to_save = dict(old.items() + data.items())


        with open(path, 'w', 0) as f:
            f.write(json.dumps(data_to_save))

我在每个新获得的数据部分调用此方法。

0 个答案:

没有答案