我有一个名为mapping.py
的文件,其中有一个字典methodMapping
。在我的Web应用程序中,键值对被添加到methodMapping字典中。将其附加到mapping.py
后,将调用reload(mapping)
,并重新加载文件(我通过在文件顶部打印出一条消息进行检查),但是当我尝试访问键值对时,KeyError
是上调。
原始的mapping.py文件:
print('mapping.py loaded) methodMapping = {}
methodMapping['key1'] = 'value1'
键值对如何附加到文件的方法如下:
from mapping import methodMapping
@app.route('/append', methods=['POST'])
def append():
key = request.form.get('key')
value = request.form.get('value')
value = value.encode('ascii', 'ignore')
f = open('mapping.py', 'a')
f.write('methodMapping["'+key+'"] = '+value)
f.write("\n\n")
f.close()
reload(mapping)
return ....
添加键值后,mapping.py如下所示:
print('mapping.py loaded')
methodMapping = {}
methodMapping['key1'] = 'value1'
methodMapping['key2'] = 'value2'
但是,当我尝试从flaskServer.py访问
methodMapping['key2']
时,出现了KeyError
异常。重新启动服务器时,它可以找到methodMapping['key2']
。注意:我已经检查了这个link也尝试了
app.run(debug=True, port=8000)
,但是对于我的应用程序来说这是不可能的,因为我使用的是带有Tensorflow后端的keras,并且设置debug = True会将其加载两次并导致一个ValueError: Tensor tensor(...) is not part of the graph
错误任何意见或建议,不胜感激。谢谢。
最佳答案
问题是您导入映射的方式。如果要使reload(mapping)
工作,则需要使用import mapping
而不是from mapping import...
。
如果找到答案,则应将其放在“答案”中而不是在注释中。 ;)
关于python - 如何在 flask 中重新加载python模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42616007/