当前位置: 首页 > news >正文

Superset二次开发之源码 run-server.sh 分析

背景:

如果基于docker方式部署Superset项目,Dockerfile文件末尾指向了docker-ci.sh,而docker-ci.sh 脚本又指向了run-server.sh。因此我们重点分析一下run-server脚本

路径 docker\run-server.sh

#!/usr/bin/env bashHYPHEN_SYMBOL='-'gunicorn \--bind "${SUPERSET_BIND_ADDRESS:-0.0.0.0}:${SUPERSET_PORT:-8088}" \--access-logfile "${ACCESS_LOG_FILE:-$HYPHEN_SYMBOL}" \--error-logfile "${ERROR_LOG_FILE:-$HYPHEN_SYMBOL}" \--workers ${SERVER_WORKER_AMOUNT:-1} \--worker-class ${SERVER_WORKER_CLASS:-gthread} \--threads ${SERVER_THREADS_AMOUNT:-20} \--timeout ${GUNICORN_TIMEOUT:-60} \--keep-alive ${GUNICORN_KEEPALIVE:-2} \--max-requests ${WORKER_MAX_REQUESTS:-0} \--max-requests-jitter ${WORKER_MAX_REQUESTS_JITTER:-0} \--limit-request-line ${SERVER_LIMIT_REQUEST_LINE:-0} \--limit-request-field_size ${SERVER_LIMIT_REQUEST_FIELD_SIZE:-0} \"${FLASK_APP}"

以上命令是用来启动一个 Gunicorn 服务器的脚本,Gunicorn 是一个 Python WSGI HTTP 服务器,常用于部署 Flask 和其他 WSGI 应用。以下是对这段命令的详细分析和解释:

各个参数的解释

`gunicorn` : 启动 Gunicorn 服务器的命令。

  • `--bind` : 指定服务器监听的地址和端口。`${SUPERSET_BIND_ADDRESS:-0.0.0.0}` 表示如果环境变量 `SUPERSET_BIND_ADDRESS` 未设置,则默认绑定到 `0.0.0.0`(即所有可用的网络接口)。`${SUPERSET_PORT:-8088}` 表示如果环境变量 `SUPERSET_PORT` 未设置,则默认使用端口 `8088`。
  • `--access-logfile` : 指定访问日志文件的路径。`${ACCESS_LOG_FILE:-$HYPHEN_SYMBOL}` 表示如果环境变量 `ACCESS_LOG_FILE` 未设置,则使用 `$HYPHEN_SYMBOL`(通常是 `-`,表示输出到标准输出)。
  • `--error-logfile` : 指定错误日志文件的路径。`${ERROR_LOG_FILE:-$HYPHEN_SYMBOL}` 表示如果环境变量 `ERROR_LOG_FILE` 未设置,则使用 `$HYPHEN_SYMBOL`。
  • `--workers` : 指定工作进程的数量。`${SERVER_WORKER_AMOUNT:-1}` 表示如果环境变量 `SERVER_WORKER_AMOUNT` 未设置,则默认使用 `1` 个工作进程。增加工作进程可以提高并发处理能力。
  • `--worker-class` : 指定工作进程的类型。`${SERVER_WORKER_CLASS:-gthread}` 表示如果环境变量 `SERVER_WORKER_CLASS` 未设置,则默认使用 `gthread`(基于线程的工作进程)。可以根据需要选择不同的工作类,如 `sync`、`eventlet`、`gevent` 等。
  • `--threads` : 指定每个工作进程的线程数。`${SERVER_THREADS_AMOUNT:-20}` 表示如果环境变量 `SERVER_THREADS_AMOUNT` 未设置,则默认使用 `20` 个线程。适用于处理 I/O 密集型任务。
  • `--timeout` : 指定请求超时时间(秒)。`${GUNICORN_TIMEOUT:-60}` 表示如果环境变量 `GUNICORN_TIMEOUT` 未设置,则默认超时为 `60` 秒。
  • `--keep-alive` : 指定保持连接的时间(秒)。`${GUNICORN_KEEPALIVE:-2}` 表示如果环境变量 `GUNICORN_KEEPALIVE` 未设置,则默认保持连接 `2` 秒。
  • `--max-requests` : 指定每个工作进程在重启之前处理的最大请求数。`${WORKER_MAX_REQUESTS:-0}` 表示如果环境变量 `WORKER_MAX_REQUESTS` 未设置,则默认值为 `0`(表示不限制)。
  • `--max-requests-jitter` : 指定在重启工作进程时的随机延迟(秒)。`${WORKER_MAX_REQUESTS_JITTER:-0}` 表示如果环境变量 `WORKER_MAX_REQUESTS_JITTER` 未设置,则默认值为 `0`。
  • `--limit-request-line` : 指定请求行的最大字节数。`${SERVER_LIMIT_REQUEST_LINE:-0}` 表示如果环境变量 `SERVER_LIMIT_REQUEST_LINE` 未设置,则默认值为 `0`(表示不限制)。
  • `--limit-request-field_size` : 指定请求头字段的最大字节数。`${SERVER_LIMIT_REQUEST_FIELD_SIZE:-0}` 表示如果环境变量 `SERVER_LIMIT_REQUEST_FIELD_SIZE` 未设置,则默认值为 `0`(表示不限制)。
  • `${FLASK_APP}` : 指定要运行的 Flask 应用程序的模块或包名。这个变量通常在环境中设置,指向 Flask 应用的入口。

   总结

这段命令通过 Gunicorn 启动一个 Flask 应用,配置了多种参数以优化性能和日志记录。通过使用环境变量,用户可以灵活地调整服务器的行为,适应不同的部署需求。整体上,这段命令为 Superset 提供了一个可扩展和高效的运行环境。

相关文章:

Superset二次开发之源码 run-server.sh 分析

背景: 如果基于docker方式部署Superset项目,Dockerfile文件末尾指向了docker-ci.sh,而docker-ci.sh 脚本又指向了run-server.sh。因此我们重点分析一下run-server脚本 路径 docker\run-server.sh #!/usr/bin/env bashHYPHEN_SYMBOL-gunicorn…...

Java 之四种内部类详解

在 Java 中,除了传统的类定义方式之外,还有一种特殊的类定义方式——内部类。内部类定义在另一个类的内部,可以访问外部类的成员,这使得代码更加灵活和可读性更强。本文将详细讲解 Java 中四种内部类的类型:成员内部类…...

03:手动可变电阻

可变电阻 1、电位器2、变阻器/数字电位器2.1:变阻器2.2:数字电位器 3、电位器锥度4、寄生电感/电容 1、电位器 如上图所示:将可变的电阻作为分压器,那么这种可变的电阻就是电位器。例如:将L1连接负极,L3连接…...

嵌入式Linux电池管理(TODO)

(TODO) 在树莓派3B上使用电池供电需要考虑多个方面,包括电源管理、硬件连接和软件配置。以下是详细的步骤和建议: 1. 选择合适的电池 树莓派3B需要5V的电源供电,通常电流需求在2.5A左右。常见的电池选择包括&#xff1…...

Python 求亲和数

亲和数(Amicable Numbers)是指两个不同的正整数,它们的真因数(即除去本身的所有因数)之和与对方的数相等。 def sum_of_proper_divisors(n):"""计算一个数的真因子之和"""divisors_su…...

【C++】——vector模拟实现和迭代器失效问题

文章目录 模拟实现vector基本成员变量vector的构造与析构vector迭代器vector容量vector元素访问vector修改操作 vector迭代器失效问题什么是迭代器失效1.插入元素导致迭代器失效2.删除元素导致迭代器失效3.重新分配空间导致迭代器失效 如何解决迭代器失效问题 模拟实现 vector…...

USB 3.1 标准 A 型连接器及其引脚分配

USB 3.1 标准 A 型连接器 USB 3.1 标准 A 型连接器被定义为主机连接器。它具有与 USB 2.0 标准 A 型连接器相同的配合接口,但增加了另外两对差分信号和一个接地引脚。 USB 3.1 标准 A 型插座可以接受 USB 3.1 标准 A 型插头或 USB 2.0 标准 A 型插头。类似地&…...

机器学习文献|基于循环细胞因子特征,通过机器学习算法预测NSCLC免疫治疗结局

今天我们一起学习一篇最近发表在Journal for immunotherapy of cancer (IF 10.9)上的文章,Machine learning for prediction of immunotherapeutic outcome in non-small-cell lung cancer based on circulating cytokine signatures[基于循环…...

Qt 实现自定义截图工具

目录 Qt 实现自定义截图工具实现效果图PrintScreen 类介绍PrintScreen 类的主要特性 逐步实现第一步:类定义第二步:初始化截图窗口第三步:处理鼠标事件第四步:计算截图区域第五步:捕获和保存图像 完整代码PrintScreen.…...

第15-05章:获取运行时类的完整结构

我的后端学习大纲 我的Java学习大纲 6.1.第一组方法API: 1.API列表:java.lang.Class 类: 2.代码测试: public class ReflectionUtils{ puvblic static void main(String[] args){}// 第一组Testpublic void api_01{//上面截图的代码......…...

【Kubernetes】K8s 的鉴权管理(二):基于属性 / 节点 / Webhook 的访问控制

K8s 的鉴权管理(二):基于属性 / 节点 / Webhook 的访问控制 1.基于属性的访问控制(ABAC 鉴权)2.基于节点的访问控制(node 鉴权)2.1 读取操作2.2 写入操作 3.基于 Webhook 的访问控制3.1 基于 We…...

Java面试、技巧、问题、回复,资源面面观

入门 先了解一下面试流程 复习 Java 基础知识: 温习 Java 编程的核心概念,包括数据类型、变量、循环、数组和面向对象的编程原则。数据结构和算法: 加强您对 Java 编程中使用的基本数据结构和算法的理解。练习编码: 在各种平台上解…...

深入理解Elasticsearch的`_source`字段与索引优化

在Elasticsearch (ES) 中,_source字段是一个关键组件,它不仅决定了数据的存储方式,还影响到查询时返回的内容。在某些场景下,我们可以通过配置_source来优化存储和性能,尤其是当我们希望减少存储空间或避免返回某些字段…...

Pikachu靶场

先来点鸡汤,少就是多,慢就是快。 环境搭建 攻击机kali 192.168.146.140 靶机win7 192.168.146.161 下载zip,pikachu - GitCode 把下载好的pikachu-master,拖进win7,用phpstudy打开网站根目录,.....再用…...

TS axios封装

方式一 service/request/request.ts import axios from axios import { ElLoading } from element-plus import type { AxiosRequestConfig, AxiosInstance, AxiosResponse } from axios import type { ILoadingInstance } from element-plus/lib/el-loading/src/loading.typ…...

学会使用西门子博途Startdrive中的测量功能

工程师在驱动调试过程中,往往需要对驱动系统的性能进行分析及优化,比如说借助于调试软件中的驱动器测量功能,可以得到驱动系统的阶跃响应、波特图等,以此为依据工程师可以调整速度控制器、电流控制器的相关参数,使驱动…...

Spring Security认证与授权

1 Spring Security介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是Spring生态系统中的一员,因此它伴随着整个Spring生态系统不断修正、升级,在spring boot项目中加入springsecurity更是…...

速通GPT:Improving Language Understanding by Generative Pre-Training全文解读

文章目录 速通GPT系列几个重要概念1、微调的具体做法2、任务感知输入变换3、判别式训练模型 Abstract概括分析和观点1. 自然语言理解中的数据问题2. 生成预训练和监督微调的结合3. 任务感知输入变换4. 模型的强大性能 Introduction概括分析和观点1. 自然语言理解的挑战在于对标…...

软件质量保证例题

答案:D 软件质量保证 功能性 适合性 准确性 互操作性 安全保密性 依从性 可靠性 成熟性 容错性 易恢复性 易用性 易理解性 易学性 易操作性 效率 时间特性 资源利用性 维护性 易分析性 易改变性 稳定性 易测试性 可移植性 适应性 易安装性 一致性 易替换…...

动态规划算法---04.斐波那契数列模型_解码方法_C++

题目链接:91. 解码方法 - 力扣(LeetCode)https://leetcode.cn/problems/decode-ways/description/ 一、题目解析 题目: 题目大意:从题目中我们可以知道,解码就是在字符串s中由‘1’到‘26’的字符可以转化…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

Android Framework预装traceroute执行文件到system/bin下

文章目录 Android SDK中寻找traceroute代码内置traceroute到SDK中traceroute参数说明-I 参数&#xff08;使用 ICMP Echo 请求&#xff09;-T 参数&#xff08;使用 TCP SYN 包&#xff09; 相关文章 Android SDK中寻找traceroute代码 设备使用的是Android 11&#xff0c;在/s…...