Uvicorn+Gunicorn+FastAPI学习笔记

news2025/1/17 2:52:12

WSGI

Web服务器网关接口(Python Web Server Gateway Interfeace,缩写WSGI)是为python定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。

Gunicorn

Gunicorn是一个基于Python的WSGI(Web服务器网关接口)HTTP服务器,它用作FastAPI的部署服务器。

它所在的位置通常是在反向代理(如 Nginx)和一个 web 应用(如django)之间,支持eventlet也支持greenlet。
Gunicorn启动项目之后一定会有一个主进程Master和一个或者多个工作进程。工作进程的数量可以指定。工作进程是实际处理请求的进程。主进程维护服务器的运行。
                        

uvicorn

uvicorn则是一个轻量级的Python ASGI(异步服务器网关接口)服务器,主要用于开发环境下运行FastAPI。

uvicorn为什么和gunicorn一起部署

uvicorn是一个基于ASGI(Asynchronous Server Gateway Interface)的高性能Web服务器框架。它可以帮助你构建和部署高性能的Web应用程序,包括API服务和Web应用程序。

gunicorn是一个WSGI(Web Server Gateway Interface)服务器,用于在生产环境中部署Python Web应用程序。它主要用于在多个工作进程之间分发请求,并且支持自动负载均衡和伸缩。

因此,当你使用uvicorn和gunicorn一起部署时,gunicorn可以作为uvicorn的前端服务器,用于将请求分发给uvicorn,而uvicorn则负责处理请求并返回响应。这样做的优势在于,gunicorn可以提供负载均衡和伸缩功能,而uvicorn则可以提供高性能的Web服务。

FastAPI

FastAPI是一个用于构建API的现代、快速(高性能)、基于标准Python类型提示的Web框架。

FastAPI的主要特点包括:

  • 速度快:得益于基于异步请求的响应处理能力,FastAPI可以处理大量并发请求。
  • 自动文档化:FastAPI利用Pydantic模型及类型提示,自动为API生成OpenAPI和JSON Schema文档。
  • 强类型:FastAPI使用Python类型提示来为请求和响应数据进行验证和转换,提供更好的类型安全性。

参考链接:

比较Flask应用部署的Gunicorn和uWSGI性能对比-Python教程-PHP中文网

【Django】如何使用gunicorn部署django程序-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

看完马云的简历,我明白了为什么他对钱没有兴趣。。。

程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 2.8 分钟。 来自:网路 马云的人生故事,如同一部传奇,充满着坎坷、奋斗和成功。 尽管他早年的高考经历并不顺利,但他的坚韧和梦想驱使着他不断前行&#xff…

算法-KMP算法

时间复杂度&#xff1a; public int strStr(String haystack, String needle) {int[] next new int[needle.length()];//next数组的生成next[0] 0;int prefixLen 0;//共同前后缀长度int i 1, j 1;//i,j复用while (i < needle.length()) {if (needle.charAt(prefixLen)…

可视化大屏的应用(16):智慧社区和网格化管理的价值

hello&#xff0c;我是大千UI工场&#xff0c;本篇分享智慧社区和网格化管理大屏设计&#xff0c;关注我们&#xff0c;学习N多UI干货&#xff0c;有设计需求&#xff0c;我们也可以接单。 实时监控和预警 可视化大屏可以将社区内各种数据、指标和信息进行实时监控和展示&…

Spring 注解开发详解

1. 注解驱动入门案例介绍 1.1 需求描述 1.需求&#xff1a;实现保存一条数据到数据库。 2.表结构&#xff1a;create table account(id int primary key auto_increment,name varchar(50),money double(7,2)); 3.要求&#xff1a;使用spring框架中的JdbcTemplate和DriverMana…

WEB攻防-.NET特性常见漏洞

目录 前置知识&#xff1a; DLL文件 .NET和DLL文件 C#和DLL文件 关系总结 .NET 配置调试-信息泄露 .NET 源码反编译-DLL 反编译与未授权访问 编译DLL文件 反编译DLL文件 注意事项 案例&#xff1a; 验证代码文件有没有可以绕过&#xff08;Cookie&Session&…

Web前端开发之HTML_2

HTML5简介与基础骨架标题标签标签之段落、换行、水平线标签之图片标签之超文本链接标签之文本列表标签之有序列表列表标签之无序列表 1. HTML5简介与基础骨架 1.1 HTML5简介 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后…

Linux——web基础实验

实验前的安装 [rootwebserver ~]# yum -y install httpd [rootwebserver ~]# systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [rootwebserver ~]# echo test for apach…

2024技术巅峰:【研发效能·创享大会】精彩不容错过!

嗨享技术轰趴 【朋友们&#xff0c;5月25日&#xff0c;北京聚起来&#xff01;】 一场汇聚行业精英、聚焦AIGC、BizDevOps、ToB产品管理、B端产品运营、平台工程、研发效能、效能度量、职业画布、DevOps国标解读等前沿议题的研发效能创享大会即将开启&#xff01; 大会的讨论…

prometheus helm install 如何配置告警模版

对接企业微信 获取企业id 注册完成之后&#xff0c;通过企业微信官网登录后台管理&#xff0c;在【我的企业】的企业信息里面&#xff0c;获取到Alertmanager服务配置需用到的第一个配置&#xff1a;企业ID 获取部门id 部门ID 在【通讯录】中&#xff0c;添加一个子部门&a…

Keil出现警告:warning: #223-D: function “XXX“ declared implicitly

这个警告表明编译器在函数使用之前没有找到函数的显式声明或定义。这通常发生在函数被使用之前没有在当前文件中进行声明或定义&#xff0c;或者头文件未正确包含。 解决方式&#xff1a; 在当前文件中添加函数声明&#xff1a;在使用函数之前&#xff0c;在当前文件中添加函…

JavaScript-4.正则表达式、BOM

正则表达式 正则表达式包含在"/"&#xff0c;"/"中 开始与结束 ^ 字符串的开始 $ 字符串的结束 例&#xff1a; "^The"&#xff1a;表示所有以"The"开始的字符串&#xff08;"There"、"The cat"等&#x…

39-数组 _ 二维数组

39-1 二维数组的创建 行和列编号依旧是从0开始&#xff1a; //arr数组&#xff1a; //1 2 3 4 //2 3 4 5 //2 4 5 6 //三行四列int main() {int arr[3][4]; //存放整数char arr1[5][10]; //存放字符return 0; } 39-2 二维数组的初始化 创建之后&#xff0c;利用初始化赋值…

Linux + mysql面试题

Linux 基础.Linux 基础说出 个以上的 Linux 命令在 RedHat 中&#xff0c;从 root 用户切到 userl 用户&#xff0c;一般用什么命令&#xff1f;Linux 中&#xff0c;一般怎么隐藏文件&#xff1f;在 Linux 系统中&#xff0c;一个文件的访问权限是 7&#xff0c;其含义是什么…

对增加LLaMA 3 上下文长度技术的猜测

AI苏妲己&#xff1a; 在许多应用场景中&#xff0c;如长对话、长文档摘要或长期计划执行等&#xff0c;大语言模型能够支持较长的上下文窗口是非常理想的。以一次处理约50页书籍内容为例&#xff0c;通常需要模型支持32K个token的上下文长度。目前&#xff0c;主流的大语言模…

docker快速搭建部署mqtt

文章目录 前言一、mqtt是什么&#xff1f;二、使用步骤1.引入库2.创建临时容器3.创建挂在目录4.将临时容器的配置挂载到宿主机中5.删除临时容器6.运行容器并挂载文件7.登录EMQX内置的管理控制台 总结 前言 一、mqtt是什么&#xff1f; MQTT&#xff08;Message Queuing Teleme…

智慧码头港口:施工作业安全生产AI视频监管与风险预警平台方案

一、建设思路 随着全球贸易的快速发展&#xff0c;港口作为连接海洋与内陆的关键节点&#xff0c;其运营效率和安全性越来越受到人们的关注。为了提升港口的运营效率和安全性&#xff0c;智慧港口视频智能监控系统的建设显得尤为重要。 1&#xff09;系统架构设计 系统应该采…

LLM大语言模型(十二):关于ChatGLM3-6B不兼容Langchain 的Function Call

背景 基于本地的ChatGLM3-6B直接开发LangChain Function Call应用&#xff0c;发现其输出的action和action_input非常不稳定。 表现为生成的JSON格式回答非常容易出现不规范的情况&#xff0c;导致LangChain的Agent执行报错&#xff0c;或者进入死循环。 ChatGLM3-6B不兼容La…

关于DevOps理解和总结

DevOps是研发领域最近几年最热的一个概念。参加过一些讲座&#xff0c;也看过不少的书籍&#xff0c;经常听到以下说法&#xff1a; DevOps是没有明确定义的&#xff0c;一千个研发心中就有一千个Devops&#xff1b;DevOps是一种文化&#xff0c;每个团队的DevOps实践都不一样…

spring基本使用

文章目录 1. ioc(Inversion of Control) | DI(Dependency Injection)(1) maven坐标导包(2) 编写配置文件bean.xml(3) 配置bean(4) 配置文件注入属性 2. DI(dependency injection) 依赖注入(setter)其他属性(1) 对象属性注入(2) 数组属性输入(3) 集合属性注入(4) map集合注入(5)…

JAVASE8中基本数据类型

本篇文章基于有过一部分的C语言基础的&#xff0c;还望大家理解 在进入到学习之前我们必须要清楚的是在JAVASE中数据类型与C语言中的数据类型基本上是相同的,接下来我们先来对8中数据类型进行简要介绍&#xff0c;他们分别是&#xff1a; 如果大家之前了解过C语言那么对于基本数…