【问题标题】:How to have one Flask app listen on two different ports?如何让一个 Flask 应用在两个不同的端口上监听?
【发布时间】:2017-12-27 14:16:43
【问题描述】:

是否可以在两个不同的端口上拥有一个带有路由的烧瓶应用程序?我的 Flask 应用程序需要侦听 webhook,并且由于某些安全业务,它无法在默认端口上接收外部 POST 请求。有可能做这样的事情吗?

@app.route('/hook/<sourcename>', methods=["POST"], port=5051)
def handle_hook(sourcename):
  print 'asdf'

【问题讨论】:

    标签: python flask


    【解决方案1】:

    如果您在 C 插件中不需要任何套接字代码,gevent 可以提供帮助,例如与

    import gevent
    from gevent.pywsgi import WSGIServer
    
    app = Flask(__name__)
    
    https_server = WSGIServer((HOST, HTTPS_PORT), app, keyfile=PRIVKEY, certfile=CERT)
    https_server.start()
    
    http_server = WSGIServer((HOST, HTTP_PORT), app)
    http_server.start()
    
    while True:
        gevent.sleep(60)
    

    【讨论】:

    • 如果从文档中正确理解,即使请求被定向到不同的端口,也将使用此解决方案一次处理一个请求。
    【解决方案2】:

    默认情况下,服务器仅侦听单个端口。因为额外的端口需要额外的功能,所以在本地代理 POST 请求的第二个端口上实现前端服务器不是更有意义吗?有许多有据可查的方法可以做到这一点such as this one

    【讨论】:

    • 我认为这是最有意义的。让应用(flask app)专注于服务的功能似乎是现在的普遍模式。代理/网关将负责路径和安全。
    猜你喜欢
    • 2011-05-20
    • 2016-09-30
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多