如何让一个 Flask 应用监听两个不同的端口?

9

是否可以使用单个Flask应用程序在两个不同的端口上设置路由?我的Flask应用程序需要监听Webhooks,由于某些安全问题,它不能在默认端口上接收外部POST请求。是否可以像这样做?

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

7
如果您的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)

如果从文档中理解正确,使用此解决方案处理请求时,即使它们被定向到不同的端口,也将逐个进行处理。 - kon psych

1
默认情况下,服务器只监听一个端口。如果需要额外的端口,则实现第二个端口上的前端服务器代理本地POST请求会更有意义,因为这需要额外的功能。有许多文档良好的方法可以做到这一点例如这个

我认为这是最合理的。现在让应用程序(Flask应用程序)专注于服务的功能似乎是常见模式。代理/网关将负责路径和安全性。 - rfportilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接