我在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))
我在每个新获得的数据部分调用此方法。