You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用mod_wsgi在本地服务器部署Dash应用实现每次访问新建实例

使用mod_wsgi部署支持单访问独立实例的Dash应用方案

该方案可实现任意用户、同一浏览器不同标签页访问服务时,都获取到独立的全新Dash应用对象,会话之间数据完全隔离。

1. 前置准备

  • 服务器已安装Apache、对应Python版本的mod_wsgi模块
  • 已安装Dash相关依赖:dash、flask

2. 编写WSGI入口文件

核心逻辑是将Dash实例创建封装为工厂函数,再通过自定义WSGI调度器实现每次请求都生成新的实例,示例代码如下:

# 项目根目录下新建wsgi.py作为入口文件
import dash
from dash import html, callback, Input, Output

def create_dash_app():
    # 每次调用生成完全独立的Dash实例
    app = dash.Dash(__name__)
    app.layout = html.Div([
        html.Button("点击计数测试", id="count-btn"),
        html.Div(id="count-show", children="尚未点击")
    ])

    # 回调仅属于当前生成的Dash实例,不会跨会话冲突
    @callback(
        Output("count-show", "children"),
        Input("count-btn", "n_clicks"),
        prevent_initial_call=True
    )
    def update_count(n):
        return f"当前会话点击次数:{n}"
    
    # 返回Dash绑定的Flask WSGI实例
    return app.server

# 自定义WSGI调度器,每次请求触发新实例创建
class WSGISessionDispatcher:
    def __call__(self, environ, start_response):
        current_app = create_dash_app()
        return current_app(environ, start_response)

# mod_wsgi默认调用的全局application对象
application = WSGISessionDispatcher()

3. 配置Apache虚拟主机

编辑Apache的虚拟主机配置文件,示例配置如下:

<VirtualHost *:80>
    ServerName 你的服务域名或IP
    DocumentRoot /你的Dash项目根目录绝对路径

    # 配置mod_wsgi守护进程,可根据服务器配置调整进程数和线程数
    WSGIDaemonProcess dash_app user=www-data group=www-data processes=2 threads=4
    WSGIScriptAlias / /你的Dash项目根目录绝对路径/wsgi.py
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On

    <Directory /你的Dash项目根目录绝对路径>
        Require all granted
        WSGIProcessGroup dash_app
        WSGIApplicationGroup %{GLOBAL}
        Options FollowSymLinks
        AllowOverride None
    </Directory>
</VirtualHost>

配置完成后重启Apache服务生效。

4. 效果验证

  • 同时打开两个浏览器标签页访问服务地址
  • 在第一个标签页多次点击计数按钮,记录显示的数值
  • 切换到第二个标签页点击按钮,可看到计数从1开始,和第一个标签页数值完全独立,即说明两个会话使用的是不同的Dash应用对象。

注意事项

  • 性能提示:每次请求都新建实例会提升服务器资源消耗,若访问量较大,可调整为基于Cookie会话的实例复用逻辑,降低重复创建开销。
  • 禁止在Dash实例外使用全局变量存储用户数据,全局变量会跨所有实例共享,会导致用户数据泄漏。
  • 生产环境部署建议开启HTTPS,保障数据传输安全。

内容的提问来源于stack exchange,提问作者Dimitris A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:36:05