ASGI Server之hypercorn

官方文档

简介

产生背景

Hypercorn最初是Quart(一款异步python微框架)的一部分,后来被分离成一个独立的ASGI服务器。Hypercorn从Quart的0.5.0版本分叉。

结构

Hypercorn是一款基于sans-io hyper、h11、h2和wsproto库的ASGI网络服务器,其灵感来自Gunicorn。它使用了异步的网络库,例如 asyncio 和 uvloop,以实现高吞吐量和并发性能.
Hypercorn支持HTTP/1、HTTP/2、WebSockets(通过HTTP/1和HTTP/2)、ASGI/2和ASGI/3规范。Hypercorn可以使用异步、uvloop或Trio worker 类型。

#什么是Trio

I/O Worker

I/O worker 是用于执行 I/O 密集型任务的工作任务类型。它们通常用于执行需要进行网络请求、文件操作或其他 I/O 操作的任务。I/O worker 会被自动调度,以便在 I/O 操作等待时让其他任务运行。

CPU Worker

CPU worker 是用于执行 CPU 密集型任务的工作任务类型。它们通常用于执行需要大量计算的任务,如数学运算、数据处理等。与 I/O worker 不同,CPU worker 不会主动让出执行权,因此需要开发人员手动管理 CPU worker 的调度。

自定义 Worker

除了内置的 I/O worker 和 CPU worker,Trio 还支持创建自定义的 worker 类型。这允许开发人员根据具体的应用场景创建适合特定类型任务的工作任务类型。

特点和优势

高性能

Hypercorn 使用异步的网络库和事件循环,能够处理大量并发请求,并提供出色的性能和响应时间。

ASGI 兼容

作为一个符合 ASGI 规范的服务器,Hypercorn 可以无缝集成和运行 ASGI 应用程序,与现代的 Python Web 框架兼容。

异步支持

Hypercorn 基于 asyncio 和 uvloop,利用异步编程的优势,可以处理 IO 密集型任务,并充分利用计算资源。

配置灵活

Hypercorn 提供了丰富的配置选项,可以根据需求进行灵活的服务器配置,包括绑定地址、端口、工作进程数、SSL 支持等。

调试友好

Hypercorn 提供了调试模式和详细的日志记录,方便开发者进行故障排查和性能分析。

相对与gunicorn的区别

Gunicorn(Green Unicorn)和 Hypercorn 是两种不同的 Python Web 服务器,它们在运行原理和架构上略有不同。

Gunicorn

Gunicorn 是一个基于 WSGI(Web Server Gateway Interface)的服务器。它使用多进程模型来处理并发请求。
在启动时,Gunicorn 主进程会创建多个 worker 进程。每个 worker 进程都会监听指定的地址和端口,并独立地处理请求。
当请求到达时,主进程会将请求分配给一个空闲的 worker 进程来处理。这些 worker 进程使用预先加载的应用程序代码来处理请求,并将响应返回给客户端。
Gunicorn 的主进程还负责管理 worker 进程的生命周期,包括自动重启、故障恢复和负载均衡等。

Hypercorn

Hypercorn 是一个基于 ASGI(Asynchronous Server Gateway Interface)的服务器。它使用异步的设计来处理并发请求。
在启动时,Hypercorn 创建一个主事件循环,并监听指定的地址和端口。
当请求到达时,Hypercorn 使用异步的网络库和事件循环,如 asyncio 和 uvloop,来处理请求。它可以同时处理多个请求,并利用异步编程的优势来提高性能和吞吐量。
Hypercorn 还支持与异步的 Python Web 框架集成,这些框架通常使用 ASGI 接口与 Hypercorn 进行交互。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用微信小程序实现远程控制无人售货柜

如何用微信小程序实现远程控制无人售货柜呢? 本文描述了使用微信小程序调用HTTP接口,实现控制无人售货柜,独立控制售货柜、格子柜的柜门。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂商1智能WiFi…

【Canvas与艺术】绘制金色八卦图

【关键点】 等比例缩放各部件及将八卦转为“二进制”的过程。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>使用…

gcc make makefile cmake之间的关系梳理

gcc是GNU Compiler Collection&#xff08;GNU编译器套件&#xff09;&#xff0c;也可以简单认为是编译器&#xff0c;它可以编译很多编程语言&#xff08;包括C、C、Object-C、Fortran、Java等&#xff09;当你的程序只有一个源文件&#xff0c;直接用gcc命令编译它。但是当你…

【Java--数据结构】提升你的编程段位:泛型入门指南,一看就会!

前言 泛型是一种编程概念&#xff0c;它允许我们编写可以适用于多种数据类型的代码。通过使用泛型&#xff0c;我们可以在编译时期将具体的数据类型作为参数传递给代码&#xff0c;从而实现代码的复用和灵活性。 在传统的编程中&#xff0c;我们通常需要为不同的数据类型编写不…

总结一下背包里的顺序和是否逆序

1.对于01背包而言&#xff0c;一维压缩态只能物品到背包且需要逆序 2.对应多重背包而言&#xff0c;组合数物品到背包&#xff0c;排列数背包到物品&#xff0c;且都需要正序

【北京迅为】《iTOP-3588开发板系统编程手册》-第20章 socket 应用编程

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Mudem,打造私密安全、高效稳定的私人空间

Mudem 是 Codigger 平台中的一个关键组件&#xff0c;它提供基础通讯服务&#xff0c;确保不同类型的机器之间可以进行安全和高效的连接。它其设计理念在于将本地机器、公有云以及私有云上的设备无缝地整合为一个可远程在线访问的工作站&#xff08;Workstation&#xff09;。这…

UE4_常见动画节点学习_Two Bone IK双骨骼IK

学习资料&#xff0c;仅供参考&#xff01; Two Bone IK 控制器将逆运动&#xff08;IK&#xff09;解算器应用于到如角色四肢等3关节链。 变量&#xff08; HandIKWeight &#xff09;被用于在角色的 hand_l 和 hand_r 控制器上驱动 关节目标位置&#xff08;Joint Target Lo…

Java常见输入输出练习

1.AB(1) 计算ab 数据范围&#xff1a; 数据组数 1≤ t ≤100 , 数据大小满足 1≤ n ≤1000 输入描述&#xff1a; 输入包括两个正整数a,b(1 < a, b < 1000),输入数据包括多组。 输出描述&#xff1a; 输出ab的结果 输入例子&#xff1a; 1 5 10 20 输出例子&#xff…

ctfshow 每周大挑战RCE极限挑战

讨厌SQl看到这个了想来玩玩 rce1 <?phperror_reporting(0); highlight_file(__FILE__);$code $_POST[code];$code str_replace("(","括号",$code);$code str_replace(".","点",$code);eval($code);?>括号过滤点过滤&…

qt;lt;等xml|Html转义字符

在写Android布局文件时&#xff0c;左右尖括号<>&#xff0c;括号在XML中没办法直接使用&#xff0c;需要进行转义&#xff0c;收集一些转义符&#xff0c;以便查询使用。 常用表&#xff1a; **对于文章出现的任何问题请大家批评指出&#xff0c;一定及时修改 **可联系…

牛客网刷题 | BC60 判断是不是字母

描述 KiKi想判断输入的字符是不是字母&#xff0c;请帮他编程实现。 输入描述&#xff1a; 多组输入&#xff0c;每一行输入一个字符。 输出描述&#xff1a; 针对每组输入&#xff0c;输出单独占一行&#xff0c;判断输入字符是否为字母&#xff0c;输出内容详见输出样例…

加密、解密、签名、验签、数字证书、CA浅析

一、加密和解密 加密和解密应用的很广&#xff0c;主要作用就是防止数据或者明文被泄露。 加解密算法主要有两大类&#xff0c;对称加密和非对称加密。对称加密就是加密和解密的密钥都是一个&#xff0c;典型的有AES算法。非对称加密就是有公钥和私钥&#xff0c;公钥可以发布…

在线测径仪的六类测头组合形式!哪种适合你?

在线测径仪&#xff0c;这一现代工业的精密仪器&#xff0c;犹如一位技艺高超的工匠&#xff0c;以其卓越的性能和精准度&#xff0c;为工业生产提供了坚实的保障。它的出现&#xff0c;不仅提高了生产效率&#xff0c;更保证了产品质量&#xff0c;为企业的可持续发展注入了强…

1张图片+3090显卡微调Qwen-VL视觉语言大模型(仅做演示、效果还需加大数据量)

原项目地址&#xff1a;https://github.com/QwenLM/Qwen-VL/blob/master/README_CN.md 环境本地部署&#xff08;见之前博文&#xff09; 【本地部署 】23.08 阿里Qwen-VL&#xff1a;能对图片理解、定位物体、读取文字的视觉语言模型 (推理最低12G显存) 一、数据集格式说明 …

『视觉感官盛宴』3D线上商场全方位展示商品与互动购买体验

随着技术的进步和消费者需求的多样化&#xff0c;3D线上商场作为一种新兴的电子商务平台&#xff0c;正逐渐改变传统的在线购物模式。 一、商品展示革命 在3D线上商场中&#xff0c;商品展示不再局限于静态图片和文字描述。借助先进的3D建模技术&#xff0c;商家能够创建商…

从0到1带你玩转pandas

学习 pandas 的过程可以分为几个阶段&#xff0c;每个阶段都围绕着不同的核心技能和概念。下面是一个为初学者设计的学习大纲&#xff1a; 一. 基础介绍 学习如何安装和设置 pandas 以及了解它的基本概念是开始使用 pandas 进行数据分析的第一步。下面我将详细介绍这些步骤&am…

【MySQL】A01、性能优化-语句分析

1、数据库优化方向 A、SQL及索引优化 根据需求写出良好的SQL&#xff0c;并创建有效的索引&#xff0c;实现某一种需求可以多种写法&#xff0c;这时候我们就要选择一种效率最高的写法。这个时候就要了解sql优化 B、数据库表结构优化 根据数据库的范式&#xff0c;设计表结构&…

mac电脑搭建vue环境(上篇)

第一步&#xff1a;mac电脑要有homebrew&#xff0c;如何安装homebrew 点击下方 MAC安装homebrew-CSDN博客 第二步&#xff1a;homebrew安装node.js 第三步&#xff1a;安装npm 第四步&#xff1a;安装webpack 第五步&#xff1a;安装vue脚手架 第六步&#xff1a;可以在…

翻译《The Old New Thing》 - Some reasons not to do anything scary in your DllMain

Some reasons not to do anything scary in your DllMain - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040127-00/?p40873 Raymond Chen 2004年01月27日 简介 这篇文章讨论了为什么不应该在DLL的DllMain函数中执行复杂的操作 正文 众所…
最新文章