我觉得我有一些缓存问题。我的Web服务通过POST请求接收数据并将其保存到磁盘。
以下是我的代码:
@app.route('/ws_part' , methods=['POST'])
def ws_part():
request_data = request.get_json()
#placeholder for workstation number and part number
received_data ={'ws_no':request_data['workstation'],
'part_no':request_data['part']}
#Checking if workstation number is already available
global updated
updated = 'no'
for i in repository:
if i['ws'] == received_data['ws']:
i['part'] = received_data['part']
updated = 'yes'
if(updated!='yes'):
new_input = received_data
repository.append(new_input)
return jsonify({'repository': repository})
我面临的问题:1.第一个请求成功通过,并给出200 OK响应,工作站编号和请求附带的部件保存在"存储库"占位符中。2.但是下一个请求抛出500服务器错误
错误:文件"API_ws_par.py",第23行,位于ws_part中如果i['ws']==received_data['ws']:KeyError:"ws">
3.有趣的是:如果此时我重新启动web服务并再次触发POST请求,则此新请求附带的数据将被覆盖,并且我将丢失以前保存的数据。4.此外,随后的第二个POST请求抛出相同的500服务器错误
如果这与缓存有关,请引导?如果是,请告诉我该怎么做?
提前谢谢。
这不是缓存问题,而是函数逻辑的问题,在第一次调用时,您可能没有到达生成异常的代码行,问题出在第二次调用上,密钥名不是"ws"而是"ws_no",如果您更改这些行:
for i in repository:
if i['ws'] == received_data['ws_no']:
i['part'] = received_data['part_no']
updated = 'yes'
要使用"ws_no"one_answers"part_no",将不会出现密钥错误。