首页 > 解决方案 > flaskapp - 两个不同 python 脚本中的两个 api 资源

问题描述

我有一个用例是我需要通过烧瓶从同一服务器运行多个 python 脚本。

script1.py如下

app = Flask(__name__)
api = Api(app)

class App(Resource):
   def post(self):
       resp = Response('successfully tested')
       return(resp)
        
api.add_resource(App, '/testapp')


if __name__ == "__main__":

    app.run(port=6000, host="0.0.0.0", use_reloader=True)

同样script2.py

app = Flask(__name__)
api = Api(app)

class Test(Resource):
   def post(self):
   resp = Response('successfully tested')
   return(resp)
        
api.add_resource(Test, '/test')


if __name__ == "__main__":

    app.run(port=5000, host="0.0.0.0", use_reloader=True)

当我按预期执行两项工作时,单独进行,http://0.0.0.0:5000/test并且http://0.0.0.0:5000/testapp工作正常。

但是,当我将这些脚本配置为服务并尝试发布 URL 时,其中一个将起作用,而另一个则失败。

我做得对吗?

标签: pythonpython-3.xflaskflask-restful

解决方案


您不能这样做,因为烧瓶服务器需要绑定到端口 [5000]。您必须在不同的端口上运行这两个脚本,然后您可以使用 Nginx 根据 API 规则代理传递它们。像下面的东西

https://serverfault.com/questions/650117/serving-multiple-proxy-endpoints-under-location-in-nginx 您可以使用任何其他反向代理,也不必使用 Nginx。


推荐阅读