我已经使用Flask创建了一个API。我遵循了Flask文档的工厂模式-规则和名称将被抽象化。 (my_package的__init __。py)
完成包和工厂方法后,我将其导入到包外部的另一个文件中,并创建了一个小脚本来启动女服务员服务器(server.py文件)
一切正常,但是我检测到每次向API发出请求时,它都会运行两次。不会发生这种情况,因为某些路由会将数据插入到我的数据库中,并且此行为将继续输入重复项。
如何正确解决此问题?我可以禁用这种双重反应吗?
我已经尝试将 app.debug 和 app.use_reloader 设置为False,没有明显的区别。
我还尝试在Waitress和Flask文档中找到一些信息,但是我能找到对我有帮助的任何东西。
def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
@app.route('/route1', methods=['POST', 'PUT'])
def route1():
if request.method == 'POST':
# route logic...
pass
elif request.method == 'PUT':
# route logic...
pass
@app.route('/route2', methods=['POST'])
def route2():
if request.method == 'POST':
# route logic...
pass
return app
import my_package
from waitress import serve
serve(my_package.create_app(), host='0.0.0.0', port=9600)
预期:API请求每次调用只能运行一次。
实际:API请求每次调用运行两次。
答案 0 :(得分:0)
我最近遇到了同样的问题,仅当您在服务中指定主机时,重复似乎才发生。当您省略主机时,它仅运行一次(本地主机可能只有这种情况,我还没有测试过)。
希望有帮助