我正在实现一个简单的应用程序,它由多个并发运行的python脚本组成。同时运行的两个脚本是用于解析数据的脚本和用于在数据库中查找数据的脚本。由于设计决策,我正在生成一部分数据。此数据不会保存在数据库中,而是保存在json文件中。在我的解析器中,我保存了这样的数据:
with open('a-1-test.json', 'w') as outfile:
json.dump(lookup_table, outfile)
outfile.close()
解析器在循环中运行,直到满足某个条件。同时,其他脚本会向查找脚本提供数据以从数据库中获取数据(解析器保存的数据)。当其他脚本调用查找脚本时,他首先需要检查json文件中的查找表,以确定具体必须获取哪些数据。
while trigger:
time.sleep(10)
with open('a-1-test.json', 'r') as data_file:
data = json.load(data_file)
for i in data.keys():
print i, len(data[i])
这可能会工作一段时间但我得到两种类型的错误:找不到JSON文档和ValueError:从(...)开始的未终止字符串。 我猜这是因为当两个不同的脚本试图访问同一个文件时,没有设置任何可靠性测量。我知道第一个错误发生是因为我使用了' w'在解析器中,将删除现有文件并创建一个新文件,因此在此期间查找脚本不会被打包以查看该文件。
我想知道python中最好的方法是什么?在写入文件时对文件进行锁定的任何方法,在完成后解锁它以便查找脚本可以读取它吗?
提前谢谢