我已经使用 Flask 创建了一个 API。我遵循了 Flask 文档的工厂模式——规则和名称将被抽象出来。(my_package 的 __init__.py)
完成包和工厂方法后,我将其导入到包外的另一个文件中,并创建了一个小脚本来启动女服务员服务器(server.py 文件)
一切都按预期工作,但我检测到每次向 API 发出请求时,它都会运行两次。这不可能发生,因为某些路由将数据插入到我的数据库中,并且此行为将继续输入重复项。
如何正确解决这个问题?我可以禁用此双重响应吗?
我已经尝试将app.debug和app.use_reloader设置为 False,没有任何明显的区别。
我还尝试在 Waitress 和 Flask 文档中找到一些信息,但我可以找到任何对我有帮助的东西。
my_package 中 __init__.py 的工厂方法:
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
server.py 文件,在 my_package 之外:
import my_package
from waitress import serve
serve(my_package.create_app(), host='0.0.0.0', port=9600)
预期:API 请求每次调用只会运行一次。
实际:每次调用都会运行两次 API 请求。