【问题标题】:flaskapp - Two api resources in two different python scriptsflaskapp - 两个不同 python 脚本中的两个 api 资源
【发布时间】:2020-08-05 17:45:27
【问题描述】:

我有一个用例,我需要通过烧瓶从同一服务器运行多个 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/testhttp://0.0.0.0:5000/testapp 工作正常。

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

我做得对吗?

【问题讨论】:

  • 服务是什么意思?你在使用某种代理吗?你想实现一个负载均衡器吗?您显示的代码似乎不相关。
  • @TheFool 我已将脚本转换为 Windows 服务。是的,你是对的,我需要通过负载均衡器运行,但在此之前我需要两个脚本都可以在本地 PC 上运行。代码不全有两个API资源有2个端点“/test”和“/testapp”这样不行吗?

标签: python python-3.x flask flask-restful


【解决方案1】:

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

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

【讨论】:

  • 谢谢大家。这有帮助。
  • 如果这个必须通过https SSL 443怎么处理?
  • 您可以简单地在 nginx 上进行 ssl-offloading,然后将其转发到相应的上游。让您 nginx 监听 443 上的请求,并根据您的资源(如 /api/v1 or api/v2)转发到 5000 service1 或 5001 service2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
相关资源
最近更新 更多