能否在Flask应用内部运行Streamlit应用
Flask整合Streamlit实现身份验证方案可行性说明
该方案完全具备可行性,你调不通大概率是选择了错误的整合方式,不要尝试将Streamlit运行时直接嵌入Flask路由逻辑内调用,二者运行模型不兼容:Streamlit是依赖长连接WebSocket的单页应用服务,和Flask的短连接HTTP请求响应模型天生不适配硬嵌入。
你可以选择以下两种成熟落地路径:
- 反向代理模式(最稳定,优先选择)
独立启动Streamlit服务,给该服务配置端口访问限制,仅允许Flask所在服务器的IP访问,避免用户绕过验证直接访问Streamlit地址。所有用户请求统一走Flask入口,身份验证逻辑全部在Flask侧实现,验证通过后由Flask反向代理到后端的Streamlit服务即可。 - 同进程托管模式
如果你需要把两个服务合并部署,可以在Flask启动时通过subprocess模块拉起Streamlit子进程,权限验证、反向代理逻辑和第一种路径完全一致,只是服务托管方式不同,不需要改动核心业务逻辑。
两种路径的身份验证都可以直接复用Flask现有体系:用户登录成功后在session中写入授权标记,所有请求转发到Streamlit前先校验session授权标记,校验不通过直接拦截跳转至登录页即可。
内容的提问来源于stack exchange,提问作者John Taylor
相关产品推荐
相关产品推荐

