我正在尝试在Amazon Load Balancer后面使用Flask应用程序,并且Flask线程会保持超时.负载均衡器似乎正在发送Connection: keep-alive
标头,这导致Flask进程永远不会返回(或需要很长时间).在前面有枪炮,过程被杀死,新的过程开始.我们还尝试使用uWSGI并简单地直接暴露Flask应用程序(没有包装器).所有这些都导致Flask进程没有响应.
我在Flask文档中看不到任何会使它忽略此标题的内容.我不知道我还能用Flask做些什么来解决这个问题.
卷曲和与机器的直接连接工作正常,只有那些通过负载平衡器导致问题.负载均衡器本身似乎没有做错任何事情,我们成功地将它与其他几个堆栈一起使用.
我现在的解决方案是使用gunicorn作为烧瓶应用的包装.因为worker_class
我eventlet
和几个工人一起使用.这种组合似乎稳定且反应灵敏.Gunicorn也配置了HTTPS.
我认为这是Flask中的缺陷导致问题,这是一个有效的解决方法.