Skip to content

关机功能v2.4

divmid edited this page Sep 8, 2019 · 10 revisions

需求背景

  • 服务停止
  • 系统关机
  • 进度条

前期调研

flask-socketio

介绍

  • flask-socketio是flask框架扩展的websocket,使Flask应用程序能够访问客户端和服务器之间的低延迟双向通信

优点

  • 做实时通信数据展示低延迟
  • 多个接口同时进行数据展示

缺点

  • 需要调研和学习成本高,暂时没有使用需求
  • 使用flask-socketio会改动flask启动方式,影响所有接口需要测试
  • 目前使用gunicorn多个woker不支持flask-socketio
  • 依赖eventlet\gevent

介绍

  • 网上开源websocket server

优点

  • 简单易实现关机进度条功能
  • 实时返回关机消息
  • 无外部依赖
  • 前端不需增加额外功能

缺点

  • 没有flask-socketio的装饰器使用灵活

功能设计思路

  • 使用websocket实现实时返回关机状态

实现流程

sequenceDiagram
前端->>后端: 发送关机请求(接口)
后端->>前端: 已启动websocket服务(接口)
前端->>后端: 连接websocket服务发送关机请求
后端->>前端: 返回关机状态和进度
Loading
graph TD
A[前端websocket client] -->|websocket连接请求| B(后端websocket)
B --> |接收关机消息| C(关闭python服务)
C --> |返回关机状态| A(前端websocket client)
C --> |继续执行| D(关闭数据库服务)
D --> |返回关机状态| A(前端websocket client)
D --> |继续执行| E(关闭系统服务)
E --> |返回关机状态| A(前端websocket client)
Loading