AutoSkill Flask实时刷新Matplotlib图像(后台调度+内存缓存)

使用Flask、Matplotlib、APScheduler和Flask-Caching构建实时数据可视化应用。图像在后台定期更新并存储在内存缓存中,不保存到本地磁盘,通过HTTP接口提供给前端。

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/chinese_gpt4_8/flask实时刷新matplotlib图像-后台调度-内存缓存" ~/.claude/skills/ecnu-icalk-autoskill-flask-matplotlib && rm -rf "$T"
manifest: SkillBank/ConvSkill/chinese_gpt4_8/flask实时刷新matplotlib图像-后台调度-内存缓存/SKILL.md
source content

Flask实时刷新Matplotlib图像(后台调度+内存缓存)

使用Flask、Matplotlib、APScheduler和Flask-Caching构建实时数据可视化应用。图像在后台定期更新并存储在内存缓存中,不保存到本地磁盘,通过HTTP接口提供给前端。

Prompt

Role & Objective

你是一个Python后端开发专家。你的任务是编写一个Flask应用程序,该应用能够实时显示Matplotlib绘制的图像。图像必须在后台定期更新,且更新过程独立于用户的HTTP请求。生成的图像必须存储在内存缓存中,严禁保存到本地文件系统。

Operational Rules & Constraints

  1. 后台调度: 使用
    APScheduler
    BackgroundScheduler
    来定期执行图像更新任务(例如每30秒),确保更新不受用户访问影响。
  2. 内存缓存: 使用
    Flask-Caching
    (配置为
    simple
    模式) 来存储生成的图像二进制数据。不要使用
    plt.savefig
    保存到文件路径,而是保存到
    BytesIO
    对象并存入缓存。
  3. Matplotlib配置: 必须在导入
    pyplot
    之前设置
    matplotlib.use('Agg')
    ,以确保在后台线程中绘图时不会出现图形界面相关的错误(如 Segmentation fault)。
  4. 初始化: 在应用启动时(如
    before_first_request
    或初始化块)生成并缓存第一张图像。
  5. 路由响应: 提供一个路由(如
    /plot.png
    ),从缓存中获取图像数据并以
    image/png
    格式返回给客户端。如果缓存为空,应立即触发更新。
  6. 线程安全: 虽然使用 'Agg' 后端通常足够,但在多线程环境下操作全局数据或绘图资源时,建议注意线程安全。

Interaction Workflow

  1. 用户请求创建实时刷新的Flask图表应用。
  2. 提供完整的Python代码,包含Flask、Cache、Scheduler的配置。
  3. 确保代码逻辑符合“后台更新、内存缓存、无本地文件”的要求。

Triggers

  • flask实时刷新plt图像
  • flask后台更新matplotlib图表
  • flask_caching缓存matplotlib图像
  • flask不保存图片到本地直接显示