在家没事做建什么网站好企业系统化管理

张小明 2026/1/11 18:24:23
在家没事做建什么网站好,企业系统化管理,云南昆明企业网站建设,外贸网站平台排名大家好#xff0c;我是jobleap.cn的小九。 Uvicorn 是一款闪电般快速的 ASGI#xff08;Asynchronous Server Gateway Interface#xff09;服务器#xff0c;专为 Python 异步 Web 应用设计#xff0c;是 FastAPI、Starlette 等主流异步 Web 框架的标配运行时。相较于传统…大家好我是jobleap.cn的小九。Uvicorn 是一款闪电般快速的 ASGIAsynchronous Server Gateway Interface服务器专为 Python 异步 Web 应用设计是 FastAPI、Starlette 等主流异步 Web 框架的标配运行时。相较于传统的 WSGI 服务器如 GunicornUvicorn 原生支持异步 I/O能高效处理高并发请求。本教程将全面覆盖 Uvicorn 的核心用法串联所有常用 API并通过实战案例演示从基础启动到生产环境部署的完整流程。一、前置准备安装 Uvicorn首先完成 Uvicorn 的安装推荐安装包含完整依赖的版本支持 SSL、websockets 等扩展# 基础安装pipinstalluvicorn# 完整安装推荐包含 ssl、websockets、httptools 等依赖pipinstalluvicorn[standard]验证安装成功uvicorn --version# 输出示例uvicorn 0.27.0.post1 (FastAPI 0.104.1) [Python 3.10.12]二、核心基础理解 ASGI 应用Uvicorn 的核心是运行 ASGI 应用先定义一个最简 ASGI 应用无需任何框架帮助理解底层逻辑# minimal_asgi.pyasyncdefapp(scope,receive,send): 标准 ASGI 应用接口 - scope: 包含请求上下文如方法、路径、协议 - receive: 接收客户端数据的异步函数 - send: 向客户端发送响应的异步函数 # 仅处理 HTTP 请求ifscope[type]http:# 接收请求体可选此处忽略awaitreceive()# 发送响应起始行awaitsend({type:http.response.start,status:200,headers:[(bcontent-type,btext/plain),],})# 发送响应体awaitsend({type:http.response.body,body:bHello, Uvicorn!,})三、Uvicorn 常用 API 全解析Uvicorn 提供两种核心使用方式命令行启动快速调试和编程式启动灵活配置以下串联所有常用 API。3.1 命令行启动最常用命令行启动是日常开发的首选方式核心语法uvicorn[模块名]:[应用实例名][可选参数]3.1.1 基础启动运行上述最简 ASGI 应用uvicorn minimal_asgi:app# 默认配置主机 127.0.0.1端口 8000单进程无重载访问http://127.0.0.1:8000将看到Hello, Uvicorn!。3.1.2 常用参数核心 API参数作用示例--host指定绑定的主机0.0.0.0 允许外网访问--host 0.0.0.0--port指定端口--port 8888--reload开发模式代码修改自动重载--reload--workers生产模式指定工作进程数建议为 CPU 核心数 × 2 1--workers 4--log-level日志级别debug/info/warning/error/critical--log-level debug--ssl-keyfileSSL 私钥文件路径开启 HTTPS--ssl-keyfile ./key.pem--ssl-certfileSSL 证书文件路径--ssl-certfile ./cert.pem--lifespan指定生命周期模式auto/on/off--lifespan on--proxy-headers信任代理头如 Nginx 反向代理--proxy-headers--root-path应用根路径反向代理时用--root-path /api--limit-concurrency最大并发连接数--limit-concurrency 1000--timeout-keep-alive长连接超时时间秒--timeout-keep-alive 5示例开发模式启动带重载、自定义端口uvicorn minimal_asgi:app --host0.0.0.0 --port8888--reload --log-level debug示例生产模式启动多进程、无重载uvicorn minimal_asgi:app --host0.0.0.0 --port8000--workers4--log-level info3.2 编程式启动灵活配置当需要在代码中动态控制 Uvicorn 启动如集成到自动化脚本、测试框架使用uvicorn.run()方法核心编程 API。3.2.1 基础编程式启动# run_programmatically.pyimportuvicornfromminimal_asgiimportappif__name____main__:# 核心 APIuvicorn.run()uvicorn.run(appapp,# ASGI 应用实例host0.0.0.0,port8888,reloadTrue,# 开发模式重载log_leveldebug)运行python run_programmatically.py效果与命令行等价。3.2.2uvicorn.run()全参数核心编程 APIuvicorn.run()支持命令行的所有参数且提供更灵活的配置方式关键参数说明uvicorn.run(# 必选应用指定支持字符串格式 模块:实例 或直接传实例appminimal_asgi:app,# 等价于直接传 app 实例# 网络配置host0.0.0.0,port8000,# 进程/重载配置reloadTrue,# 开发模式重载reload_dirs[.],# 监听的重载目录默认当前目录reload_includes[*.py],# 监听的文件类型workers4,# 生产模式工作进程数reload 和 workers 互斥# 日志配置log_levelinfo,log_configNone,# 自定义日志配置文件路径JSON/YAML# SSL 配置ssl_keyfile./key.pem,ssl_certfile./cert.pem,ssl_version2,# SSL 版本默认 TLS 1.2# 生命周期配置lifespanauto,# 生命周期模式auto/on/off# 连接限制limit_concurrency1000,limit_max_requests10000,# 每个工作进程最大处理请求数防止内存泄漏timeout_keep_alive5,# 代理配置proxy_headersTrue,# 信任 X-Forwarded-* 头root_path/api,# 应用根路径)3.2.3 自定义日志配置通过log_config参数自定义日志格式适配生产环境# custom_log.pyimportuvicornimportloggingfromlogging.configimportdictConfig# 自定义日志配置log_config{version:1,disable_existing_loggers:False,formatters:{default:{format:%(asctime)s - %(name)s - %(levelname)s - %(message)s,},},handlers:{console:{class:logging.StreamHandler,formatter:default,},file:{class:logging.FileHandler,filename:uvicorn.log,formatter:default,},},loggers:{uvicorn:{handlers:[console,file],level:INFO,propagate:False,},},}if__name____main__:dictConfig(log_config)uvicorn.run(minimal_asgi:app,host0.0.0.0,port8000,log_configlog_config,# 传入自定义日志配置)3.3 结合 FastAPI 实战最主流场景Uvicorn 最常用的场景是运行 FastAPI 应用以下是完整实战示例串联所有核心用法3.3.1 编写 FastAPI 应用# fastapi_app.pyfromfastapiimportFastAPI,Requestfromfastapi.middleware.corsimportCORSMiddleware# 初始化 FastAPI 应用appFastAPI(titleUvicorn FastAPI 实战,description演示 Uvicorn 常用 API 串联,version1.0.0)# 跨域中间件生产环境必备app.add_middleware(CORSMiddleware,allow_origins[*],allow_credentialsTrue,allow_methods[*],allow_headers[*],)# 生命周期钩子启动/关闭app.on_event(startup)asyncdefstartup_event():启动时执行初始化资源如数据库连接print(✅ 应用启动成功初始化完成)app.on_event(shutdown)asyncdefshutdown_event():关闭时执行释放资源如关闭数据库连接print(❌ 应用已关闭资源已释放)# 路由示例app.get(/)asyncdefroot():return{message:Hello, Uvicorn FastAPI!}app.get(/items/{item_id})asyncdefread_item(item_id:int,q:strNone):return{item_id:item_id,q:q}app.post(/items/)asyncdefcreate_item(request:Request):dataawaitrequest.json()return{received:data}3.3.2 启动 FastAPI 应用方式1命令行启动开发模式uvicorn fastapi_app:app --host0.0.0.0 --port8000--reload --log-level debug访问http://127.0.0.1:8000/docs可看到 FastAPI 自动生成的接口文档。方式2编程式启动生产模式# run_fastapi.pyimportuvicornif__name____main__:uvicorn.run(fastapi_app:app,host0.0.0.0,port8000,workers4,# 生产模式多进程log_levelinfo,proxy_headersTrue,# 信任反向代理头如 Nginxlimit_max_requests10000,# 每个进程最大处理10000个请求后重启防止内存泄漏timeout_keep_alive10,# 长连接超时10秒)3.4 HTTPS 配置生产环境必备Uvicorn 支持通过 SSL 证书开启 HTTPS以下是自签名证书的示例生产环境请使用正规证书步骤1生成自签名证书# 生成私钥和证书需安装 opensslopenssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days365-nodes步骤2启动 HTTPS 服务命令行方式uvicorn fastapi_app:app --host0.0.0.0 --port8443--ssl-keyfile ./key.pem --ssl-certfile ./cert.pem编程式方式uvicorn.run(fastapi_app:app,host0.0.0.0,port8443,ssl_keyfile./key.pem,ssl_certfile./cert.pem,ssl_version2,# TLS 1.2)访问https://127.0.0.1:8443即可自签名证书需浏览器信任。四、生产环境部署最佳实践4.1 推荐架构Gunicorn Uvicorn生产环境中通常用 GunicornWSGI 服务器作为主进程管理器Uvicorn 作为工作进程利用 Gunicorn 的进程管理能力# 安装 Gunicornpipinstallgunicorn# 启动命令4个 Uvicorn 工作进程gunicorn fastapi_app:app -w4-k uvicorn.workers.UvicornWorker -b0.0.0.0:80004.2 配置文件部署创建gunicorn_config.py统一管理配置# gunicorn_config.pybind0.0.0.0:8000workers4# CPU核心数 × 2 1worker_classuvicorn.workers.UvicornWorkermax_requests10000max_requests_jitter100timeout30keepalive5logfilegunicorn.logloglevelinfo启动gunicorn -c gunicorn_config.py fastapi_app:app五、常见问题与解决方案5.1 重载–reload不生效原因Uvicorn 仅监听指定目录的文件变化默认是当前目录。解决方案通过--reload-dirs指定监听目录uvicorn fastapi_app:app --reload --reload-dirs ./src5.2 端口被占用解决方案查看端口占用并杀死进程Linux/macOSlsof-i:8000# 查看8000端口占用进程kill-9PID# 杀死对应进程5.3 多工作进程下的状态共享问题问题每个 Uvicorn 工作进程是独立的全局变量无法共享。解决方案使用外部存储如 Redis、数据库共享状态避免依赖进程内变量。5.4 SSL 证书错误原因证书路径错误或证书格式不兼容。解决方案确保ssl-keyfile和ssl-certfile路径正确使用 PEM 格式证书。六、总结Uvicorn 作为 Python 异步 Web 应用的核心服务器其常用 API 可归纳为命令行启动快速调试核心参数包括--host、--port、--reload、--workers编程式启动灵活配置通过uvicorn.run()实现动态控制生产环境结合 Gunicorn 管理进程配置 SSL 证书优化并发参数。掌握以上用法后可轻松应对 FastAPI/Starlette 等异步框架的开发、调试和生产部署全流程。Uvicorn 的设计简洁且高性能是现代 Python Web 开发的必备工具。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

精通网站建设需要学什么南京江宁网站制作公司

单调队列 1. 什么是单调队列? 单调队列,顾名思义,就是存储的元素要么单调递增要么单调递减的队列。注意,这⾥的队列和普通 的队列不⼀样,是⼀个双端队列。2. 单调队列解决的问题 ⼀般⽤于解决滑动窗⼝内最⼤值最⼩值…

张小明 2025/12/21 13:11:32 网站建设

无锡网站建设无锡微小店网站建设费用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个性能对比工具,比较传统方法和AI辅助方法解决metadata lock问题的效率。功能包括:1. 模拟metadata lock场景;2. 记录手动排查(使用SHOW P…

张小明 2025/12/21 13:09:30 网站建设

龙华民治网站设计公司wordpress水印图片插件

一、ai 获客落地的核心诉求:实操性与适配性2025 年,ai 智能体获客已从概念走向实操阶段,“落地难、效果碎片化” 仍是中小企业面临的主要挑战。选择相关领域分享者时,核心考量维度应聚焦于行业实战经验、方Fa论可复制性与场景适配…

张小明 2025/12/21 13:07:29 网站建设

无忧网络网站建设微信定制版app

IotClient下载地址, 这款软件可以模拟多种plc设备以及modbus设备,方便相关开发人员做软件协议调试,也是aiots系统的主要模拟器(点击下载)。注: 安装启动后可以先做版本检查更新 软件的整体界面,通过切换不同选项卡实现不同设备的模拟以modbus tcp为例 其…

张小明 2026/1/4 9:58:16 网站建设

贵州安顺网站建设小程序模板平台有哪些

AI模型管理终极指南:如何快速选择最佳AI模型并优化性能 🚀 【免费下载链接】vscode-ai-toolkit 项目地址: https://gitcode.com/GitHub_Trending/vs/vscode-ai-toolkit 面对海量的AI模型选择,你是否感到迷茫?&#x1f914…

张小明 2025/12/21 13:03:26 网站建设

河北建设局网站首页河南app软件开发

Langchain-Chatchat如何处理同义词查询?语义泛化能力测试 在企业知识管理的日常场景中,一个看似简单的问题却常常难倒传统搜索系统:“合同什么时候到期?” 如果文档里写的是“本协议将于2025年终止”,或者“租赁关系在…

张小明 2025/12/21 13:01:22 网站建设