使用Waitress和Flask运行两次的API调用

时间:2018-12-24 17:50:39

标签: python rest flask waitress

我已经使用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请求每次调用运行两次。

1 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题,仅当您在服务中指定主机时,重复似乎才发生。当您省略主机时,它仅运行一次(本地主机可能只有这种情况,我还没有测试过)。

希望有帮助