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

django-plotly-dash多会话CPU密集型页面阻塞问题求助

解决Django-Plotly-Dash单请求阻塞问题

问题根源

Django默认的runserver是单线程单进程模式,同一时间只能处理一个请求。当某个页面执行耗时计算时,服务器资源被完全占用,无法响应其他用户的任何请求,导致整个Web服务暂时无响应。

可行解决方案

1. 开启多线程/多进程运行开发服务器

直接给runserver添加参数,让服务器支持同时处理多个请求:

# 多线程模式
python manage.py runserver --threaded

# 多进程模式(需Django 3.0及以上版本)
python manage.py runserver --workers 4

这样单个耗时请求不会阻塞所有会话,其他用户可以正常访问页面。

2. 异步化耗时计算逻辑

如果计算本身需要很长时间,建议把计算逻辑从请求主线程中剥离:

  • 用Django 3.1+支持的async视图,将耗时计算封装为异步函数
  • 借助Celery等任务队列,把计算任务放到后台执行,前端通过轮询或WebSocket获取最终结果

3. 优化Plotly Dash回调

检查Dash的回调函数,避免在回调中执行同步的重型计算:

  • 将回调内的计算逻辑拆分为异步任务
  • 使用dcc.Interval组件实现前端异步更新,避免长时间阻塞请求连接

4. 生产环境换用专业服务器

生产环境绝对不要用runserver,改用Gunicorn、uWSGI这类支持多进程/多线程的服务器:

# 示例:用Gunicorn启动4个工作进程
gunicorn --workers 4 your_project.wsgi:application

内容的提问来源于stack exchange,提问作者DataYoda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:01:12