最新资讯

  • 【光子AI / Photon.AI】uvicorn 极简教程:Python 的 ASGI Web 服务器

【光子AI / Photon.AI】uvicorn 极简教程:Python 的 ASGI Web 服务器

2026-01-29 02:13:04 栏目:最新资讯 3 阅读

【光子AI / Photon.AI】uvicorn 极简教程:Python 的 ASGI Web 服务器

Uvicorn is an ASGI web server implementation for Python.

  • https://github.com/AIGeniusInstitute/uvicorn
  • https://uvicorn.dev/

这是一个 Uvicorn 的极简上手教程。Uvicorn 是一个基于 uvloophttptools 构建的超快 ASGI 服务器,通常用于运行 FastAPI 或 Starlette 应用。

文章目录

  • 【光子AI / Photon.AI】uvicorn 极简教程:Python 的 ASGI Web 服务器
      • 1. 安装
      • 2. 编写最简单的应用
      • 3. 启动服务器 (命令行方式)
      • 4. 常用参数速查
      • 5. 代码中启动 (脚本方式)
      • 6. 生产环境部署建议
  • ============================================
    • 1) Uvicorn 是什么(1 句话)
    • 2) 安装(推荐装标准依赖)
      • 最小安装
      • 推荐安装(开发/常见生产更省心)
    • 3) 跑一个“纯 ASGI”最小示例(不依赖 FastAPI)
    • 4) 跑 FastAPI(最常见用法)
    • 5) 最常用参数(够用版)
      • 开发
      • 绑定地址/端口
      • 多进程(生产常用)
    • 6) 放到反向代理(Nginx/Caddy/云负载均衡)后面的要点(极简但关键)
    • 7) 一句话“抄作业”模板
    • 附:你只需要记住的一条规则
  • ==================uvloop==================
      • 1. 什么是 uvloop?
      • 2. 安装
      • 3. 如何使用
        • 标准用法(推荐)
      • 4. 在 Web 框架中使用
      • 5. Jupyter Notebook 中使用
      • 6. 注意事项
      • 总结
    • 1)uvloop 是什么(一句话)
    • 2)安装(最小步骤)
    • 3)最推荐的“极��用法”:uvloop.run()
    • 4)如果你想更“贴近 asyncio 官方方向”:loop_factory(Python 3.12+)
    • 5)在 Web 框架里用(以 Uvicorn/FastAPI 为例)
    • 6)三个最常见坑(极简版排雷)
      • 坑 A:Windows / PyPy
      • 坑 B:要在“创建事件循环之前”设置好
      • 坑 C:Jupyter/已有事件循环环境
    • 7)什么时候用 uvloop 最划算(快速判断)
      • 1. 核心引擎:libuv (站在巨人的肩膀上)
      • 2. 桥梁技术:Cython (去掉了中间商)
      • 3. 性能优化的“黑魔法”
        • A. 零损耗的内存管理 (Memory Management)
        • B. 函数调用开销最小化
        • C. 高效的句柄 (Handle) 管理
      • 4. 架构对比图
      • 总结
    • 1)uvloop 的本质:用 libuv 重新实现了 asyncio 的 EventLoop
    • 2)libuv 的事件循环模型(理解 uvloop 的关键)
    • 3)uvloop 怎么把 asyncio 的语义映射到 libuv(核心机制逐个拆)
      • 3.1 `call_soon()`:把回调放进 ready 队列,下一轮循环执行
      • 3.2 `call_soon_threadsafe()`:用 `uv_async_t` 跨线程唤醒 loop
      • 3.3 `call_later()` / `call_at()`:用 `uv_timer_t` 实现定时器
      • 3.4 `add_reader()` / `add_writer()`:用 `uv_poll_t` 监听 fd 可读/可写
      • 3.5 DNS:`getaddrinfo`/`getnameinfo` 走 libuv request(并用线程池做阻塞部分)
      • 3.6 信号(signals):用 “self-pipe + wakeup_fd” 把 signal 变成可读事件
    • 4)为什么 uvloop 往往更快(从机制上解释,不靠玄学)
    • 5)你想读源码/定位机制时,从哪些文件入手(最短路径)


1. 安装

建议安装标准版(包含 Cython 依赖,速度更快):

pip install "uvicorn[standard]"

2. 编写最简单的应用

创建一个名为 main.py 的文件。

场景 A:配合 FastAPI(最常用)

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

场景 B:原生 ASGI 应用(不依赖框架)

async def app(scope, receive, send):
    assert scope['type'] == 'http'
    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [[b'content-type', b'text/plain']],
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, Uvicorn!',
    })

3. 启动服务器 (命令行方式)

在终端中运行:

uvicorn main:app --reload
  • main: 你的 Python 文件名(main.py)。
  • app: 文件中实例化的对象名(比如 app = FastAPI())。
  • --reload: 开发模式神器。代码修改后自动重启服务器。

4. 常用参数速查

参数说明示例
--reload开发模式,代码变动自动重启uvicorn main:app --reload
--host绑定 IP。0.0.0.0 允许外网访问uvicorn main:app --host 0.0.0.0
--port指定端口(默认 8000)uvicorn main:app --port 8080
--workers启动的工作进程数(生产环境用)uvicorn main:app --workers 4

5. 代码中启动 (脚本方式)

如果你想直接运行 Python 文件来启动服务器(方便调试):

# main.py 文件底部
import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return "OK"

if __name__ == "__main__":
    # 等同于命令行: uvicorn main:app --reload
    uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)

运行方法:python main.py

6. 生产环境部署建议

在生产环境中(Linux),通常不直接裸跑 Uvicorn,而是使用 Gunicorn 作为进程管理器来管理 Uvicorn 的 Worker,以获得更好的稳定性和性能。

安装:

pip install gunicorn

运行命令:

gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
  • -w 4: 开启 4 个 Worker 进程。
  • -k ...: 指定使用 Uvicorn 的 Worker 类。

总结:
开发用 uvicorn main:app --reload,生产用 Gunicorn 带 Uvicorn Worker。

============================================

下面是一份 Uvicorn 极简教程(从 0 到跑起来),并在末尾附一个“最常用的进阶参数清单”,够用但不啰嗦。


1) Uvicorn 是什么(1 句话)

Uvicorn 是 Python 的 ASGI Web 服务器,用来跑 FastAPI / Starlette / 任何 ASGI 应用,支持 HTTP/1.1 和 WebSocket。


2) 安装(推荐装标准依赖)

最小安装

pip install uvicorn

最小依赖主要是 h11 + click

推荐安装(开发/常见生产更省心)

pip install "uvicorn[standard]"

standard 会额外带上常用性能/体验依赖,例如 uvloophttptoolswebsocketswatchfiles 等;其中 watchfiles 会让 --reload 更好用。


3) 跑一个“纯 ASGI”最小示例(不依赖 FastAPI)

新建 main.py

# main.py
async def app(scope, receive, send):
    assert scope["type"] == "http"

    await send({
        "type": "http.response.start",
        "status": 200,
        "headers": [
            (b"content-type", b"text/plain"),
        ],
    })
    await send({
        "type": "http.response.body",
        "body": b"Hello, world!",
    })

启动:

uvicorn main:app

这里的 main:app 意思是:从 main.py 这个模块里导入 app 这个 ASGI 应用对象。


4) 跑 FastAPI(最常见用法)

main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"hello": "world"}

启动(开发推荐):

uvicorn main:app --reload

对外监听(容器/服务器上常用):

uvicorn main:app --host 0.0.0.0 --port 8000

FastAPI 官方文档也强调:--reload 非常适合开发,但不应该用于生产环境(更耗资源、也更不稳定)。


5) 最常用参数(够用版)

这些基本能覆盖 80% 场景:

开发

  • 自动热重载:
    uvicorn main:app --reload
    
    --reload 会监控文件变化;如果装了 watchfilesuvicorn[standard] 会装),还能用更细的 include/exclude。

绑定地址/端口

  • 默认只监听本机 127.0.0.1:8000
  • 需要局域网/外网访问用:
    uvicorn main:app --host 0.0.0.0 --port 8000
    
    --host/--port 的默认值与含义见官方 settings。

多进程(生产常用)

uvicorn main:app --workers 4

注意:--workers--reload 互斥,不能同时用。


6) 放到反向代理(Nginx/Caddy/云负载均衡)后面的要点(极简但关键)

如果你在 Nginx 后面跑 Uvicorn,官方给了典型 Nginx 配置示例,并建议可用 UNIX Socket--uds)连接更稳。

同时,“真实客户端 IP / http vs https” 往往靠 X-Forwarded-ForX-Forwarded-Proto 这类头传递;Uvicorn 支持读取这些,但必须配置你信任哪些代理来源(否则会被伪造)。相关参数是 --proxy-headers--forwarded-allow-ips


7) 一句话“抄作业”模板

  • 本地开发:
    uvicorn main:app --reload
    
  • 服务器/容器(单进程):
    uvicorn main:app --host 0.0.0.0 --port 8000
    
  • 服务器/容器(多进程):
    uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
    

附:你只需要记住的一条规则

你把“应用对象”暴露为 app(或其他名字),然后用 模块名:对象名 交给 uvicorn 就行。

uvloop

这是一个关于 uvloop 的极简教程。

1. 什么是 uvloop?

一句话介绍: 它是 Python 标准库 asyncio高性能替代品

  • 核心: 基于 libuv(Node.js 也在用这个库)构建。
  • 效果: 让 Python 的异步代码运行速度提高 2-4 倍,性能直逼 Go 和 Node.js。
  • 适用: Linux 和 macOS(不支持 Windows)。

2. 安装

pip install uvloop

3. 如何使用

使用非常简单,只需要添加两行代码:引入库,然后调用 install()

标准用法(推荐)
import asyncio
import uvloop # 1. 导入

async def main():
    print("Hello, uvloop!")
    await asyncio.sleep(1)
    print("Done.")

if __name__ == "__main__":
    # 2. 安装 uvloop 策略
    # 这行代码会将 asyncio 的默认事件循环替换为 uvloop
    uvloop.install() 
    
    asyncio.run(main())

4. 在 Web 框架中使用

如果你是做 Web 开发(FastAPI, Sanic, Django 等),通常不需要手动写代码

  • Uvicorn (FastAPI 的默认服务器):
    Uvicorn 默认就会检测并使用 uvloop。只要你安装了它,Uvicorn 就会自动启用。

    # 只要安装了 uvloop,启动时不需要额外配置
    pip install uvloop
    uvicorn main:app
    

    如果想强制使用或禁用: uvicorn main:app --loop uvloop--loop asyncio

  • Sanic:
    Sanic 默认内置并使用 uvloop,无需额外操作。

  • Gunicorn:
    如果使用 Gunicorn 部署 Uvicorn worker:

    gunicorn -k uvicorn.workers.UvicornWorker main:app
    

    它也会自动继承 Uvicorn 的行为(自动使用 uvloop)。


5. Jupyter Notebook 中使用

在 Jupyter 或 IPython 中,因为环境已经在这个 Event Loop 中运行,直接 uvloop.install() 可能会报错或无效。通常在 Notebook 中做实验不需要替换 Loop,但在生产代码中记得加上。


6. 注意事项

  1. 操作系统限制: uvloop 不支持 Windows。如果在 Windows 上开发,请使用标准 asyncio,部署到 Linux 服务器时再安装 uvloop
    • 技巧: 可以用 try...except 兼容:
      try:
          import uvloop
          uvloop.install()
      except ImportError:
          pass # Windows 下没有 uvloop,回退到标准 asyncio
      
  2. 兼容性: 虽然它力求与 asyncio 100% 兼容,但在极少数使用底层 API 的库中可能会有问题(非常罕见)。

总结

安装 uvloop -> 代码开头加 uvloop.install() -> 享受加速。

下面是一个uvloop 极简教程:目标是让你在 1~3 分钟内把 asyncio 的事件循环换成 uvloop,并知道在不同 Python 版本/常见框架里怎么用。


1)uvloop 是什么(一句话)

uvloop 是 asyncio 默认事件循环的“更快替代品”,底层基于 libuv;官方 README 给出的经验结论是:很多网络场景里能让 asyncio 快 2~4 倍


2)安装(最小步骤)

python -m pip install -U pip
python -m pip install uvloop

uvloop 当前版本线(截至 2026-01-09)在 PyPI 上显示 Requires: Python >= 3.8.1,并且能看到 0.22.1(2025-10-16 上传)的发布信息。


3)最推荐的“极��用法”:uvloop.run()

从 uvloop 0.18 开始,官方 README 推荐直接用 uvloop.run() 作为入口(它会把 asyncio.run() 配置成使用 uvloop)。

main.py

import asyncio
import uvloop

async def main():
    await asyncio.sleep(0.1)
    print("hello from uvloop")

uvloop.run(main())

运行:

python main.py

4)如果你想更“贴近 asyncio 官方方向”:loop_factory(Python 3.12+)

Python 文档里说明:asyncio.run()3.12 增加了 loop_factory 参数,并且官方也提到 policy 机制在 3.14 已弃用、计划 3.16 移除,更推荐用 loop_factory 来配置事件循环。

所以你也可以这样写(本质上和 uvloop.run 的思路一致):

import asyncio
import uvloop

async def main():
    ...

asyncio.run(main(), loop_factory=uvloop.new_event_loop)

5)在 Web 框架里用(以 Uvicorn/FastAPI 为例)

如果你用的是 Uvicorn:

  • 直接指定:
    uvicorn main:app --loop uvloop
    
  • 或者默认 --loop auto:如果安装了 uvloop,会自动优先选 uvloop;没有则回退到 asyncio。

6)三个最常见坑(极简版排雷)

坑 A:Windows / PyPy

很多生态文档会直接写明:uvloop 不兼容 Windows 或 PyPy,因此这些平台不可用(常见报错就是 “uvloop does not support Windows at the moment”)。

坑 B:要在“创建事件循环之前”设置好

无论用 uvloop.run() 还是 loop_factory,都应该作为程序入口最早发生;不要等 event loop 已经跑起来了再切。

坑 C:Jupyter/已有事件循环环境

asyncio.run()(以及 uvloop.run())都不能在“同线程已有运行中的事件循环”里再调用;Notebook 里更推荐直接 await main()(但这就不算“脚本入口极简”那种用法了)。


7)什么时候用 uvloop 最划算(快速判断)

  • 很划算:高并发网络 I/O(HTTP 服务、网关、爬虫、长连接、代理、消息转发等)——uvloop 主打的就是 event loop 调度和 I/O 性能。
  • 不神奇:CPU 密集型(纯计算/GIL 限制)——换 uvloop 不会把 CPU 运算变快,通常要靠多进程/原生扩展/向量化等。

如果你只记一条:脚本入口用 uvloop.run(main);上框架(Uvicorn)就 装上 uvloop 并让 Uvicorn 选 uvloop

===============================

uvloop 之所以快,并不是因为它使用了什么魔法,而是因为它通过 Cython 将 Python 标准库 asyncio 的核心逻辑(事件循环)用 C 语言 重新写了一遍,底层则由高性能的 libuv 驱动。

可以将它的原理拆解为三个核心支柱:核心引擎 (libuv)桥梁技术 (Cython)极度优化的内存管理


1. 核心引擎:libuv (站在巨人的肩膀上)

uvloop 的名字就来源于 libuv

  • 什么是 libuv? 它是 Node.js 的核心异步 I/O 库。它非常成熟、稳定且极快。
  • 它做什么? 它负责处理底层的操作系统通知。比如“网卡收到数据了”、“文件读取完毕了”。
  • 为什么快? 它在 Linux 上使用 epoll,在 macOS 上使用 kqueue,这些是操作系统能够提供的最高效的 I/O 通知机制。

对比: Python 原生 asyncio 虽然也支持 epoll,但其内部封装逻辑较重。uvloop 直接利用了经过 Node.js 全球海量并发验证过的 libuv


2. 桥梁技术:Cython (去掉了中间商)

这是 uvloop 最关键的实现细节。uvloop 不是简单地用 Python 调 C 库,而是用 Cython 编写的

  • 完全替换: uvloop 并不是“修补”了 asyncio,而是实现了 asyncio.AbstractEventLoop 接口的一个全新类
  • 绕过 Python 解释器:
    • 原生 asyncio: 事件循环的调度逻辑主要是 Python 代码。每次循环、每个回调,都要在 Python 解释器层面跑很多指令,产生大量 CPU 开销。
    • uvloop: 整个事件循环的“心跳”是在 C 语言层面(通过 Cython 编译)运行的。只有到了必须执行用户写的 Python 回调函数(比如你的 async def)时,它才会切换回 Python。

3. 性能优化的“黑魔法”

仅仅用 C 重写并不足以达到现在的速度,uvloop 的作者(MagicStack 团队)在实现细节上做了大量优化:

A. 零损耗的内存管理 (Memory Management)

在异步编程中,会频繁创建小的对象(比如 Future 对象、Task 对象、Handle 对象)。

  • 原生 asyncio: 每次操作都可能分配新的 Python 对象,造成内存碎片和 GC(垃圾回收)压力。
  • uvloop: 使用了 Free list(空闲链表) 技术。它会重用已经被废弃的 C 结构体内存,而不是反复向操作系统申请和释放内存。这极大地减少了内存分配的开销。
B. 函数调用开销最小化

Python 的函数调用是有开销的(参数解包、栈帧创建等)。

  • uvloop 在内部处理 libuv 的回调时,尽可能保持在 C 层面流转,只有在最后一步才将数据转化为 Python 对象传给用户代码。
C. 高效的句柄 (Handle) 管理

uvloop 针对不同类型的 I/O(TCP, UDP, Pipe, Signal)进行了专门的优化路径,而不是使用通用的低效封装。


4. 架构对比图

为了直观理解,我们可以对比一下调用路径:

原生 asyncio 的路径:

Python 代码 -> asyncio (Python循环) -> Select/Epoll (C模块) -> 操作系统
      ^                                      |
      |______________________________________|
      大量 Python 字节码执行,频繁的对象创建

uvloop 的路径:

Python 代码 -> uvloop (C/Cython循环) -> libuv (C库) -> 操作系统
      ^                                   |
      |___________________________________|
      几乎纯 C 的路径,极少的 Python 介入,内存复用

总结

uvloop 的原理可以概括为:

  1. 底子好: 用了 Node.js 同款的高性能 libuv 做底盘。
  2. 写得好:Cython 把事件循环逻辑“编译”成了 C 语言,消除了 Python 解释器的慢速循环开销。
  3. 算得精: 极致的内存复用和对象池技术,减少了垃圾回收的压力。

这就是为什么只加了两行代码,Python 就能跑得像 Go 一样快的原因。

==========================================

下面按“从 asyncio 的抽象 → libuv 的事件循环模型 → uvloop 怎么把两者粘起来”的顺序,把 uvloop 背后的实现原理讲清楚(尽量贴近源码结构,但不要求你读 Cython/CPython 才能理解)。


1)uvloop 的本质:用 libuv 重新实现了 asyncio 的 EventLoop

asyncio(PEP 3156)把“事件循环”设计成可插拔组件:只要你实现 asyncio.AbstractEventLoop 这套接口,就能替换默认 event loop。uvloop 做的就是:实现完整的 asyncio event loop API,但底层不走 Python 默认 selector 循环,而是走 libuv

同时,uvloop 是用 Cython 写的扩展模块(不是纯 Python),并且构建时会拉取/包含 libuv 源码(git clone --recursive 会把 libuv 也拉下来)。这解释了它为什么能把大量“循环内热路径”挪到 C 层去跑。


2)libuv 的事件循环模型(理解 uvloop 的关键)

libuv 的设计核心是两类对象:

  • handles(句柄):长期存在的“事件源/监视器”,比如 timer、TCP server、poll(fd)、async 等。
  • requests(请求):短生命周期的一次性操作,比如一次 write request、一次 getaddrinfo 请求等。

libuv 的循环迭代(tick)大致按固定阶段执行:先跑 due timers、再处理 pending callbacks、idle/prepare、计算 poll 超时、阻塞等待 I/O、check、close callbacks……并且 I/O poll 的底层会用平台最优机制(Linux epoll、macOS/BSD kqueue、Windows IOCP 等)。

你可以把 libuv 看成一个“高性能反应器(reactor)内核”:负责等待事件、在事件发生时回调;上层库负责把“用户想要的抽象”(比如 asyncio 的 Task/Future/transport/protocol)映射到这些回调上。


3)uvloop 怎么把 asyncio 的语义映射到 libuv(核心机制逐个拆)

下面是最重要的一张“映射表”。我会用 uvloop 的 Cython 源码片段(旧版本 0.9.1 但机制一致) + libuv 官方文档来解释每一项。

3.1 call_soon():把回调放进 ready 队列,下一轮循环执行

asyncio 的最小调度原语就是 loop.call_soon(cb, ...)把回调塞到“待执行队列”里,尽快执行

uvloop 的做法也是类似:维护一个 _ready 队列;关键在于——它用 libuv 的某个 handle(典型是 idle/prepare/check 这类“每轮都会被调用的钩子”)来驱动“从 _ready 队列里弹出回调并执行”。在源码里能看到 _on_idle 会去消费 ready 队列并执行 handle。

为什么要靠 libuv 的 handle?因为底层循环是 libuv 在跑,uvloop 必须把“执行 Python 回调”挂到 libuv 的 tick 阶段里。


3.2 call_soon_threadsafe():用 uv_async_t 跨线程唤醒 loop

asyncio 要求 call_soon_threadsafe 能从别的线程把任务塞进 loop,并唤醒正在 poll 的事件循环。

libuv 专门提供了 uv_async_t:它允许你从任意线程调用 uv_async_send() 唤醒事件循环,然后让回调在 loop 所在线程执行(并且会发生“合并 coalesce”,多次 send 可能只触发一次回调)。

uvloop 里对应的实现就是:

  • call_soon_threadsafe() 先把回调入队;
  • 然后调用一个 handler_async.send() 去唤醒 loop。
    handler_async 的底层正是 uv_async_t:初始化用 uv_async_init,唤醒用 uv_async_send

一句话总结call_soon_threadsafe = 入队 + uv_async_send 唤醒


3.3 call_later() / call_at():用 uv_timer_t 实现定时器

asyncio 的延迟调度本质是“定时器堆/最小堆 + 到期触发”。libuv 里对应的就是 uv_timer_t:可以 uv_timer_start(timeout, repeat),到期后回调。

uvloop 中的 TimerHandle 会创建一个 UVTimer 并启动它,然后把这个 timer handle 记录在 loop._timers 集合里用于生命周期管理。


3.4 add_reader() / add_writer():用 uv_poll_t 监听 fd 可读/可写

asyncio 允许你把一个 fd(或 socket)注册到事件循环:可读时回调、可写时回调。

libuv 提供 uv_poll_t 来做这件事:监听 fd 的 readable/writable 等事件。

uvloop 的实现是:为每个 fd 维护一个 UVPoll 对象;如果 fd 第一次出现就 UVPoll.new(self, fd),然后 start_reading(handle)start_writing(handle)。这在源码里是非常直接的:

小提示:libuv 文档也提醒了 uv_poll_t 的一些限制(比如同一 socket 不能多个 poll handle,否则可能 busyloop)。这也是为什么 uvloop 会自己维护“fd→poll handle”的唯一映射。


3.5 DNS:getaddrinfo/getnameinfo 走 libuv request(并用线程池做阻塞部分)

asyncio 的 DNS(以及很多库的域名解析)经常是性能/延迟热点。

libuv 提供 uv_getaddrinfo / uv_getnameinfo 的异步版本。
同时 libuv 明确说明:它内部有一个全局线程池,会用于 文件系统操作以及 getaddrinfo/getnameinfo 这类本质上可能阻塞的调用。默认线程数是 4,可通过 UV_THREADPOOL_SIZE 调整(最大 1024)。

uvloop 的 dns.pyx 里能看到它直接调用:uv.uv_getaddrinfo(loop.uvloop, ..., __on_addrinfo_resolved, ...),完成后回调。


3.6 信号(signals):用 “self-pipe + wakeup_fd” 把 signal 变成可读事件

asyncio 在 Unix 上的 signal 处理,核心思路是:信号到来时不要在信号处理器里做复杂逻辑,而是把它转成“某个 fd 可读”事件,让事件循环在安全上下文里处理

uvloop 也遵循这个策略:它创建 socketpair(),并用 signal.set_wakeup_fd() 把信号通知写入到某一端;然后对另一端 add_reader,当 fd 可读就读出来并分发信号回调。源码里能看到 _setup_signals()socketpair + set_wakeup_fd,以及 _recv_signals_start() 把 self-pipe 注册为 reader。


4)为什么 uvloop 往往更快(从机制上解释,不靠玄学)

uvloop 性能优势通常来自两层叠加:

  1. “循环内热路径”更多在 C 层:uvloop 用 Cython + libuv,把大量“每次 tick 都会发生的工作”(fd 事件分发、定时器触发、唤醒机制、部分 transport/write 逻辑)放到更低层执行,减少 Python 函数调度/对象开销。

  2. libuv 本身是成熟的高性能事件循环内核:它的 poll 后端、定时器、handle/request 模型在 Node.js 等生态中长期打磨,并且明确了循环阶段与线程模型(网络 I/O 单线程;文件/DNS 用线程池补齐异步)。

注意:这不意味着“任何程序都变快”。CPU 密集型任务瓶颈不在 event loop;而且如果你的瓶颈在协议解析/业务逻辑(例如 HTTP parser 很慢),换 loop 也救不了。uvloop 官方文章里也提过类似现象(瓶颈可能在 HTTP 解析器而非 I/O)。


5)你想读源码/定位机制时,从哪些文件入手(最短路径)

如果你准备进一步刨源码,按这个顺序最容易建立整体感:

  1. loop.pyx:loop 的初始化、call_soon_threadsafe 唤醒、signals self-pipe、reader/writer 注册等(你会看到 uv_loop_inituv_runhandler_async.send()_add_reader/_add_writer)。
  2. handles/async_.pyxuv_async_t 封装,理解“跨线程唤醒”的 C 层路径。
  3. cbhandles.pyxTimerHandle 如何用 UVTimer(libuv timer)实现。
  4. dns.pyx:DNS request 如何对接 libuv。
  5. poll/udp/tcp/stream 等:transport/protocol 如何把 socket I/O 对接到 libuv 的 handle。

如果你希望我用一张更“工程化”的图(比如把 asyncio API 分成 Scheduling / Timers / FD Watchers / Network Transports / DNS / Signals / Subprocess,并画出它们对应的 libuv handle/request),我也可以把这套映射画成一页速查图,方便你写分享/做内部培训。

本文地址:https://www.yitenyun.com/1118.html

搜索文章

Tags

#远程工作 #服务器 #python #pip #conda #ios面试 #ios弱网 #断点续传 #ios开发 #objective-c #ios #ios缓存 香港站群服务器 多IP服务器 香港站群 站群服务器 #kubernetes #笔记 #平面 #容器 #linux #学习方法 #运维 #进程控制 #学习 #开发语言 #云原生 #iventoy #VmWare #OpenEuler #docker #后端 #数据库 #Trae #IDE #AI 原生集成开发环境 #Trae AI #人工智能 #node.js #cpolar #fastapi #html #css #MobaXterm #ubuntu #物联网 #websocket #低代码 #爬虫 #音视频 #Conda # 私有索引 # 包管理 #数信院生信服务器 #Rstudio #生信入门 #生信云服务器 #内网穿透 #网络 #vscode #mobaxterm #深度学习 #计算机视觉 #github #git #算法 #大数据 #安全 #nginx #tcp/ip #开源 #vllm #大模型 #Streamlit #Qwen #本地部署 #AI聊天机器人 #golang #java #redis #RTP over RTSP #RTP over TCP #RTSP服务器 #RTP #TCP发送RTP #缓存 #web安全 #jvm #我的世界 #android #腾讯云 #c# #kylin #unity #游戏引擎 #需求分析 #Dell #PowerEdge620 #内存 #硬盘 #RAID5 #架构 #面试 #ssh #ide #银河麒麟 #系统升级 #信创 #国产化 #华为 #ModelEngine #多个客户端访问 #IO多路复用 #回显服务器 #TCP相关API #编辑器 #hadoop #hbase #hive #zookeeper #spark #kafka #flink #qt #C++ #凤希AI伴侣 #云计算 #银河麒麟高级服务器操作系统安装 #银河麒麟高级服务器V11配置 #设置基础软件仓库时出错 #银河麒高级服务器系统的实操教程 #生产级部署银河麒麟服务系统教程 #Linux系统的快速上手教程 #udp #c++ #json #科技 #自然语言处理 #神经网络 #jmeter #功能测试 #软件测试 #自动化测试 #职场和发展 #prometheus #gpu算力 #grafana #ping通服务器 #读不了内网数据库 #bug菌问答团队 #flutter #数码相机 #debian #改行学it #创业创新 #程序员创富 #asp.net #sqlserver #centos #claude #http #cpp #项目 #高并发 #arm开发 #企业开发 #ERP #项目实践 #.NET开发 #C#编程 #编程与数学 #fiddler #gemini #gemini国内访问 #gemini api #gemini中转搭建 #Cloudflare #screen 命令 #mvp #个人开发 #设计模式 #1024程序员节 #AI编程 #金融 #mcp #金融投资Agent #Agent #elasticsearch #版本控制 #Git入门 #开发工具 #代码托管 #研发管理 #禅道 #禅道云端部署 #个人博客 #windows #n8n #毕设 #RAID #RAID技术 #磁盘 #存储 #嵌入式编译 #ccache #distcc #vue.js #前端 #ollama #ai #llm #性能优化 #智能路由器 #oracle #Spring AI #MCP服务器 #STDIO协议 #Streamable-HTTP #McpTool注解 #服务器能力 #Android #Bluedroid #分阶段策略 #模型协议 #我的世界服务器搭建 #minecraft #AI #大模型学习 #javascript #压力测试 #openlayers #bmap #tile #server #vue #电脑 #自动化 #c语言 #网络协议 #todesk #asp.net大文件上传 #asp.net大文件上传下载 #asp.net大文件上传源码 #ASP.NET断点续传 #asp.net上传文件夹 #jenkins #华为云 #部署上线 #动静分离 #Nginx #新人首发 #jar #ansible #微信小程序 #小程序 #微信 #健身房预约系统 #健身房管理系统 #健身管理系统 #SSH #X11转发 #Miniconda #mcu #MCP #聊天小程序 #鸭科夫 #逃离鸭科夫 #鸭科夫联机 #鸭科夫异地联机 #游戏 #开服 #北京百思可瑞教育 #百思可瑞教育 #北京百思教育 #apache #risc-v #嵌入式硬件 #tdengine #时序数据库 #制造 #涛思数据 #deepseek #php #交互 #flask #SSH公钥认证 # PyTorch # 安全加固 #Proxmox VE #虚拟化 #VMware #spring #spring boot #部署 #GPU服务器 #8U #硬件架构 #NPU #CANN #搜索引擎 #cosmic #stm32 #macos #mysql #pytorch #阿里云 #远程桌面 #远程控制 #东方仙盟 #JumpServer #堡垒机 #API限流 # 频率限制 # 令牌桶算法 #iBMC #UltraISO #黑群晖 #虚拟机 #无U盘 #纯小白 #集成测试 #微服务 #振镜 #振镜焊接 #teamviewer #蓝湖 #Axure原型发布 #llama #opencv #语言模型 #单元测试 #YOLO # Triton # 目标检测 #网络安全 #pycharm #lua #语音识别 #测试工具 #京东云 #DisM++ # GLM-4.6V # 系统维护 #SRS #流媒体 #直播 #数据结构 #DeepSeek #蓝耘智算 #910B #昇腾 #jupyter #AIGC #ida #web server #请求处理流程 #aws #react.js #分布式 #单片机 #深度优先 #DFS #svn #守护进程 #复用 #screen #系统架构 #课程设计 # 双因素认证 # TensorFlow #rustdesk #p2p #unity3d #服务器框架 #Fantasy #源码 #闲置物品交易系统 #毕业设计 #umeditor粘贴word #ueditor粘贴word #ueditor复制word #ueditor上传word图片 #YOLOFuse # Base64编码 # 多模态检测 #IPv6 #DNS #进程 #操作系统 #进程创建与终止 #shell #SPA #单页应用 #django #web3.py #麒麟OS #swagger #visual studio code #java-ee #transformer #prompt #RustDesk #IndexTTS 2.0 #本地化部署 #计算机 #树莓派4b安装系统 #mamba #车辆排放 #智能手机 #sqlite #Ansible #Playbook #AI服务器 #journalctl #epoll #算力一体机 #ai算力服务器 #电气工程 #C# #PLC #openresty #AI论文写作工具 #学术写作辅助 #论文创作效率提升 #AI写论文实测 #wordpress #雨云 #sql #maven #tomcat #intellij-idea #libosinfo #ssl #TCP #客户端 #嵌入式 #DIY机器人工房 #gitlab #vuejs #eBPF #说话人验证 #声纹识别 #CAM++ #高级IO #select #计算机网络 #信令服务器 #Janus #MediaSoup #1panel #vmware #Windows #gitea #FTP服务器 #网站 #截图工具 #批量处理图片 #图片格式转换 #图片裁剪 #万悟 #联通元景 #智能体 #镜像 #scala #测试用例 #webrtc #idm #Android16 #音频性能实战 #音频进阶 # GPU租赁 # 自建服务器 #ci/cd #web服务器 #uni-app #H5网页 #网页白屏 #H5页面空白 #资源加载问题 #打包部署后网页打不开 #HBuilderX #postgresql #SSE # AI翻译机 # 实时翻译 #VMWare Tool #microsoft #心理健康服务平台 #心理健康系统 #心理服务平台 #心理健康小程序 #无人机 #Deepoc #具身模型 #开发板 #未来 #经验分享 #agent #ai大模型 #散列表 #哈希算法 #openEuler #GATT服务器 #蓝牙低功耗 #扩展屏应用开发 #android runtime #PyTorch #CUDA #Triton #adb #论文笔记 #硬件 #dify #信号处理 #昇腾300I DUO #学术论文创作 #论文效率提升 #MBA论文写作 #PowerBI #企业 #idea #intellij idea #数据挖掘 #5G #数据分析 #vnstat #监控 #运维开发 #memcache #文心一言 #AI智能体 #C2000 #TI #实时控制MCU #AI服务器电源 #AutoDL #leetcode #Llama-Factory # 树莓派 # ARM架构 #H5 #跨域 #发布上线后跨域报错 #请求接口跨域问题解决 #跨域请求代理配置 #request浏览器跨域 #系统安全 #漏洞 #WT-2026-0001 #QVD-2026-4572 #smartermail #游戏机 #银河麒麟操作系统 #openssh #华为交换机 #信创终端 #UDP的API使用 #处理器 #飞牛nas #fnos #支付 #bash #Modbus-TCP #notepad++ #智能体来了 #智能体对传统行业冲击 #行业转型 #AI赋能 #Linux #Socket网络编程 #统信UOS #服务器操作系统 #win10 #qemu #管道Pipe #system V #RAG #LLM #chat #YOLO26 #目标检测 #远程开发 #SAP #ebs #metaerp #oracle ebs #muduo库 #uv #uvx #uv pip #npx #Ruff #pytest #postman #win11 #milvus #springboot #知识库 #机器学习 #html5 #计算几何 #斜率 #方向归一化 #叉积 #chrome #安卓 #媒体 #Anaconda配置云虚拟环境 #MQTT协议 #交通物流 #C语言 #政务 #手机h5网页浏览器 #安卓app #苹果ios APP #手机电脑开启摄像头并排查 #实时音视频 #业界资讯 #rocketmq #selenium #fabric #密码学 #可信计算技术 #openHiTLS #TLCP #DTLCP #商用密码算法 #harmonyos #ArkUI #ArkTS #鸿蒙开发 #laravel #CPU #测评 #CCE #Dify-LLM #Flexus #Nacos #web #服务器繁忙 #go #Clawdbot #个人助理 #数字员工 #cursor #puppeteer #KMS #slmgr #连接数据库报错 #spine #硬件工程 #智能家居 #POC #问答 #交付 #xlwings #Excel #mybatis #翻译 #spring cloud #bootstrap #nfs #iscsi #文件IO #输入输出流 #文件管理 #NAS #文件服务器 #jetty #信息与通信 #tcpdump #前端框架 #负载均衡 #chatgpt #kmeans #聚类 #YOLOv8 # Docker镜像 #SA-PEKS # 关键词猜测攻击 # 盲签名 # 限速机制 #视频去字幕 #ms-swift # 大模型 # 模型训练 #scanf #printf #getchar #putchar #cin #cout #大语言模型 #程序员 #Java #企业级存储 #网络设备 #Smokeping #pve #langchain #LangGraph #CLI #Python #JavaScript #langgraph.json #ddos #vps #zotero #WebDAV #同步失败 #代理模式 #工具集 #大模型应用 #API调用 #PyInstaller打包运行 #服务端部署 #esp32教程 #排序算法 #jdk #排序 # 高并发部署 #欧拉 #aiohttp #asyncio #异步 #数据仓库 #软件 #本地生活 #电商系统 #商城 #.netcore # IndexTTS 2.0 # 自动化运维 #https #LoRA # lora-scripts # 模型微调 #cesium #可视化 #麒麟 #rdp #海外服务器安装宝塔面板 #大模型部署 #mindie #大模型推理 #飞牛NAS #NVR #EasyNVR #Go并发 #高并发架构 #Goroutine #系统设计 #Dify #ARM架构 #鲲鹏 #.net #net core #kestrel #web-server #asp.net-core #MC #大模型开发 #SSH反向隧道 # Miniconda # Jupyter远程访问 #集成学习 #EMC存储 #存储维护 #NetApp存储 #链表 #链表的销毁 #链表的排序 #链表倒置 #判断链表是否有环 #简单数论 #埃氏筛法 #codex #Harbor #yum #windows11 #系统修复 #PTP_1588 #gPTP #rtsp #转发 #Termux #Samba #三维 #3D #三维重建 #CVE-2025-61686 #路径遍历高危漏洞 # 大模型推理 #rust #鸿蒙PC #进程等待 #wait #waitpid #pdf #大模型教程 #AI大模型 #结构体 #Kylin-Server #国产操作系统 #服务器安装 #LangFlow # 智能运维 # 性能瓶颈分析 #VMware Workstation16 #推荐算法 #devops #戴尔服务器 #戴尔730 #装系统 #SMTP # 内容安全 # Qwen3Guard #junit #渗透测试 #黑客技术 #文件上传漏洞 #ThingsBoard MCP #ShaderGraph #图形 #MinIO服务器启动与配置详解 #clickhouse #代理 #平板 #零售 #智能硬件 #vncdotool #链接VNC服务器 #如何隐藏光标 #HeyGem # 服务器IP访问 # 端口映射 #CTF #A2A #GenAI #遛狗 #bug #MS #Materials #r-tree #FHSS #能源 #自动化运维 #插件 #开源软件 #DHCP #服务器解析漏洞 #nodejs #NFC #智能公交 #服务器计费 #FP-增长 #GPU #算力建设 #数据安全 #注入漏洞 #ue5 #wpf # 一锤定音 # 大模型微调 #SSH密钥 # CUDA # ControlMaster #练习 #基础练习 #数组 #循环 #九九乘法表 #计算机实现 #dynadot #域名 #ETL管道 #向量存储 #数据预处理 #DocumentReader #bond #服务器链路聚合 #网卡绑定 #esb接口 #走处理类报异常 #ffmpeg #le audio #蓝牙 #低功耗音频 #通信 #连接 #arm #smtp #smtp服务器 #PHP #银河麒麟部署 #银河麒麟部署文档 #银河麒麟linux #银河麒麟linux部署教程 #serverless #ui #googlecloud #Qwen3-14B # 大模型部署 # 私有化AI #tensorflow #AI 推理 #NV #大剑师 #nodejs面试题 #vp9 #ServBay #agi #攻防演练 #Java web #红队 # WebUI # 网络延迟 #ranger #MySQL8.0 #GB28181 #SIP信令 #SpringBoot #视频监控 #SSH跳板机 # Python3.11 #fpga开发 #LVDS #高速ADC #DDR #word #驱动开发 #ESP32 # OTA升级 # 黄山派 #ansys #ansys问题解决办法 #screen命令 #mariadb #Gunicorn #WSGI #Flask #并发模型 #容器化 #性能调优 #系统管理 #服务 #Emby #视频 #ambari #门禁 #梯控 #智能一卡通 #门禁一卡通 #消费一卡通 #智能梯控 #一卡通 #源代码管理 #elk #超时设置 #客户端/服务器 #网络编程 #挖矿 #Linux病毒 #sql注入 #ai编程 #机器人 #muduo #TcpServer #accept #高并发服务器 # 服务器配置 # GPU # 高并发 #数据恢复 #视频恢复 #视频修复 #RAID5恢复 #流媒体服务器恢复 #AI-native #Gateway #认证服务器集成详解 #框架搭建 #状态模式 #dba #Tokio #国产化OS #react native #WinSCP 下载安装教程 #SFTP #FTP工具 #服务器文件传输 #excel # CosyVoice3 # 批量部署 #copilot # 批量管理 #ASR #SenseVoice #星图GPU # TTS服务器 # 键鼠锁定 #glibc #中间件 #远程连接 #vivado license #CVE-2025-68143 #CVE-2025-68144 #CVE-2025-68145 #node #zabbix #IO #证书 #scrapy #AI写作 #winscp #ONLYOFFICE #MCP 服务器 #后端框架 #参数估计 #矩估计 #概率论 # 数字人系统 # 远程部署 #Host #SSRF #LE Audio #BAP #powerbi #Node.js # child_process #scikit-learn #随机森林 #安全威胁分析 #仙盟创梦IDE #运维工具 #GLM-4.6V-Flash-WEB # AI视觉 # 本地部署 #网络攻击模型 #动态规划 #pyqt #dlms #dlms协议 #逻辑设备 #逻辑设置间权限 #分类 #企业微信 #3d #模型训练 #Minecraft #Minecraft服务器 #PaperMC #我的世界服务器 #ipmitool #BMC #C #STDIO传输 #SSE传输 #WebMVC #WebFlux #embedding #kong #Kong Audio #Kong Audio3 #KongAudio3 #空音3 #空音 #中国民乐 #人大金仓 #Kingbase #小艺 #鸿蒙 #搜索 #Spring AOP #程序人生 #paddleocr #wsl #产品经理 #就业 #多进程 #python技巧 #V11 #kylinos #raid #raid阵列 #KMS激活 #numpy #CSDN #论文阅读 #软件工程 #Langchain-Chatchat # 国产化服务器 # 信创 #青少年编程 #webpack #database #儿童AI #图像生成 #pjsip #LobeChat #vLLM #GPU加速 #SSH保活 #数字化转型 #实体经济 #商业模式 #软件开发 #数智红包 #商业变革 #创业干货 #人脸识别sdk #视频编解码 #人脸识别 #开源工具 #FASTMCP #ZooKeeper #ZooKeeper面试题 #面试宝典 #深入解析 #n8n解惑 #Tracker 服务器 #响应最快 #torrent 下载 #2026年 #Aria2 可用 #迅雷可用 #BT工具通用 #Zabbix #CosyVoice3 #语音合成 #高斯溅射 #reactjs #web3 # 语音合成 #产品运营 #Puppet # IndexTTS2 # TTS # 自动化部署 # VibeThinker #联机教程 #局域网联机 #局域网联机教程 #局域网游戏 #eureka #云服务器 #个人电脑 #AI技术 #mongodb #广播 #组播 #并发服务器 #x86_64 #数字人系统 #MC群组服务器 #uvicorn #uvloop #asgi #event #yolov12 #研究生life #gpu #nvcc #cuda #nvidia #其他 #unix #C/C++ #编程 #c++高并发 #百万并发 #CS2 #debian13 #信创国产化 #达梦数据库 #RXT4090显卡 #RTX4090 #深度学习服务器 #硬件选型 #SQL注入主机 #uip #k8s #echarts ##租显卡 #树莓派 #温湿度监控 #WhatsApp通知 #IoT #MySQL # 服务器IP # 端口7860 #Reactor #短剧 #短剧小程序 #短剧系统 #微剧 #空间计算 #原型模式 #hibernate #nosql #VibeVoice # 云服务器 #汽车 #可撤销IBE #服务器辅助 #私钥更新 #安全性证明 #双线性Diffie-Hellman # 公钥认证 #数据访问 #gateway #Comate #I/O模型 #并发 #水平触发、边缘触发 #多路复用 #eclipse #servlet #arm64 #CNAS #CMA #程序文件 #SSH复用 # 远程开发 #磁盘配额 #存储管理 #形考作业 #国家开放大学 #系统运维 #wireshark #网络安全大赛 #C++ UA Server #SDK #跨平台开发 #信息可视化 #云服务器选购 #Saas #线程 #机器视觉 #6D位姿 #UOS #海光K100 #统信 #outlook #错误代码2603 #无网络连接 #2603 #mssql #实时检测 #卷积神经网络 #串口服务器 #Modbus #MOXA #lucene #DAG #Docker #b树 #具身智能 #Fun-ASR # 语音识别 #HarmonyOS APP #密码 #VS Code调试配置 #firefox #safari # RTX 3090 #windbg分析蓝屏教程 #AI电商客服 #spring ai #oauth2 #memory mcp #Cursor #数据可视化 #网路编程 #nmodbus4类库使用教程 #docker-compose #目标跟踪 #rtmp #声源定位 #MUSIC #fs7TF # 远程访问 #c++20 #Buck #NVIDIA #算力 #交错并联 #DGX #ROS # 局域网访问 # 批量处理 #内存治理 #IFix # 高温监控 # 远程连接 #gerrit #opc ua #opc #npu # 环境迁移 #matplotlib #安全架构 #log #指针 #anaconda #虚拟环境 #远程软件 # GLM-TTS # 数据安全 #xshell #host key #TTS私有化 # IndexTTS # 音色克隆 #内网 # 跳板机 #浏览器自动化 #python #blender #设计师 #图像处理 #游戏美术 #技术美术 # ARM服务器 #分布式数据库 #集中式数据库 #业务需求 #选型误 #编程助手 # Connection refused #Xshell #Finalshell #生信 #生物信息学 #组学 #代理服务器 #rsync # 数据同步 #SSH免密登录 #ip #雨云服务器 #教程 #MCSM面板 #Apple AI #Apple 人工智能 #FoundationModel #Summarize #SwiftUI #ceph #多线程 #claudeCode #content7 #跳槽 #工作 #turn #ARM服务器 # 多模态推理 #网安应急响应 #odoo #微PE # GLM # 服务连通性 #HarmonyOS #azure #视觉检测 #visual studio # 串口服务器 # NPort5630 #appche #WRF #WRFDA #RK3576 #瑞芯微 #硬件设计 #TTS #gRPC #注册中心 # GPU集群 #服务器开启 TLS v1.2 #IISCrypto 使用教程 #TLS 协议配置 #IIS 安全设置 #服务器运维工具 #ftp #sftp #uniapp #合法域名校验出错 #服务器域名配置不生效 #request域名配置 #已经配置好了但还是报错 #uniapp微信小程序 #YOLO识别 #YOLO环境搭建Windows #YOLO环境搭建Ubuntu # 轻量化镜像 # 边缘计算 #华为od #华为机试 #OpenHarmony #Python办公自动化 #Python办公 #SSH跳转 #Socket #套接字 #I/O多路复用 #字节序 #工程设计 #预混 #扩散 #燃烧知识 #层流 #湍流 #weston #x11 #x11显示服务器 #量子计算 #samba #c #RSO #机器人操作系统 #硬盘克隆 #DiskGenius #opc模拟服务器 #cpu #RWK35xx #语音流 #实时传输 #超算中心 #PBS #lsf #报表制作 #职场 #用数据讲故事 #语音生成 #AI部署 # ms-swift #PN 结 #服务器线程 # SSL通信 # 动态结构体 #JNI #pxe #lvs #adobe #STUN # TURN # NAT穿透 #MCP服务器注解 #异步支持 #方法筛选 #声明式编程 #自动筛选机制 #数据迁移 #MinIO #麦克风权限 #访问麦克风并录制音频 #麦克风录制音频后在线播放 #用户拒绝访问麦克风权限怎么办 #uniapp 安卓 苹果ios #将音频保存本地或上传服务器 #express #cherry studio #gmssh #宝塔 #漏洞挖掘 #Exchange #free #vmstat #sar #sentinel #宝塔面板部署RustDesk #RustDesk远程控制手机 #手机远程控制 #系统安装 #铁路桥梁 #DIC技术 #箱梁试验 #裂纹监测 #四点弯曲 #nas #可再生能源 #绿色算力 #风电 #若依 #TRO #TRO侵权 #TRO和解 #es安装 #Discord机器人 #云部署 #程序那些事 #AI应用编程 #r语言 #服务器IO模型 #非阻塞轮询模型 #多任务并发模型 #异步信号模型 #多路复用模型 # 黑屏模式 #前端开发 #EN4FE #领域驱动 #自由表达演说平台 #演说 #移动端h5网页 #调用浏览器摄像头并拍照 #开启摄像头权限 #拍照后查看与上传服务器端 #摄像头黑屏打不开问题 #AI Agent #开发者工具 #流程图 #图论 #国产开源制品管理工具 #Hadess #一文上手 #蓝桥杯 #工业级串口服务器 #串口转以太网 #串口设备联网通讯模块 #串口服务器选型 #okhttp # REST API # GLM-4.6V-Flash-WEB #IndexTTS2 # 阿里云安骑士 # 木马查杀 #范式 #计算机外设 # keep-alive #入侵 #日志排查 #Karalon #AI Test #remote-ssh #健康医疗 #ET模式 #非阻塞 #高考 #iot #多模态 #微调 #超参 #LLamafactory #工程实践 #策略模式 #租显卡 #训练推理 #AI应用 #CMake #Make #图像识别 #pencil #pencil.dev #设计 #Java程序员 #Java面试 #后端开发 #Spring源码 #Spring #轻量化 #低配服务器 #Beidou #北斗 #SSR #Anything-LLM #IDC服务器 #私有化部署 #gpt #API #taro #模版 #函数 #类 #笔试 #java大文件上传 #java大文件秒传 #java大文件上传下载 #java文件传输解决方案 #wps #Linux多线程 #bigtop #hdp #hue #kerberos #OPCUA #PyCharm # 远程调试 # YOLOFuse #simulink #matlab #docker安装seata #信息安全 #信息收集 #poll #流量监控 #Autodl私有云 #深度服务器配置 # 水冷服务器 # 风冷服务器 #VoxCPM-1.5-TTS # 云端GPU # PyCharm宕机 #全链路优化 #实战教程 #传统行业 #diskinfo # 磁盘健康 #Syslog #系统日志 #日志分析 #日志监控 #生产服务器问题查询 #日志过滤 # AI部署 #everything #材料工程 #智能电视 #AB包 #VMware创建虚拟机 #远程更新 #缓存更新 #多指令适配 #物料关联计划 #CPU利用率 #AI生成 # outputs目录 # 自动化 #挖漏洞 #攻击溯源 #stl #漏洞修复 #IIS Crypto #warp #HistoryServer #Spark #YARN #jobhistory #DooTask #sglang #ComfyUI # 推理服务器 #防毒面罩 #防尘面罩 #rabbitmq #m3u8 #HLS #移动端H5网页 #APP安卓苹果ios #监控画面 直播视频流 #Prometheus #esp32 arduino #决策树 #Hadoop #SSH Agent Forwarding # 容器化 #UEFI #BIOS #Legacy BIOS #内存接口 # 澜起科技 # 服务器主板 #Aluminium #Google # 显卡驱动备份 #模拟退火算法 #计算机毕业设计 #程序定制 #毕设代做 #课设 #文件传输 #电脑文件传输 #电脑传输文件 #电脑怎么传输文件到另一台电脑 #电脑传输文件到另一台电脑 #身体实验室 #健康认知重构 #系统思维 #微行动 #NEAT效应 #亚健康自救 #ICT人 #云开发 #性能 #优化 #RAM #KMS 激活 #AI智能棋盘 #Rock Pi S #边缘计算 #nacos #银河麒麟aarch64 # 服务器迁移 # 回滚方案 #Ubuntu服务器 #硬盘扩容 #命令行操作 #大模型入门 #homelab #Lattepanda #Jellyfin #Plex #Kodi #开关电源 #热敏电阻 #PTC热敏电阻 #云计算运维 #asp.net上传大文件 #TensorRT # 推理优化 #SSH别名 #BoringSSL #企业存储 #RustFS #对象存储 #高可用 #Jetty # 嵌入式服务器 #模块 #ICE #群晖 #音乐 # 鲲鹏 #IntelliJ IDEA #Spring Boot #neo4j #NoSQL #SQL #http头信息 #Coturn #TURN #log4j # HiChatBox # 离线AI #建筑缺陷 #红外 #数据集 #TCP服务器 #开发实战 #SMARC #ARM #全文检索 #银河麒麟服务器系统 # 代理转发 #文生视频 #WAN2.2 #AI视频生成 #游戏策划 #游戏程序 #用户体验 #TLS协议 #HTTPS #运维安全 #数学建模 #2026年美赛C题代码 #2026年美赛 #智能制造 #供应链管理 #工业工程 #库存管理 #WinDbg #Windows调试 #内存转储分析 #运维 #claude code #code cli #ccusage #Ascend #MindIE #FRP #上下文工程 #langgraph #意图识别 #Ubuntu #mtgsig #美团医药 #美团医药mtgsig #美团医药mtgsig1.2 #反向代理 #UDP套接字编程 #UDP协议 #网络测试 #CA证书 #测速 #iperf #iperf3 #静脉曲张 #腿部健康 #运动 #session #面向对象 #基础语法 #标识符 #常量与变量 #数据类型 #运算符与表达式 #边缘AI # Kontron # SMARC-sAMX8 #主板 #总体设计 #电源树 #框图 #OpenAI #故障 #iphone #WEB #阿里云RDS #coffeescript #二值化 #Canny边缘检测 #轮廓检测 #透视变换 #交换机 #三层交换机 # 权限修复 #模型上下文协议 #MultiServerMCPC #load_mcp_tools #load_mcp_prompt #markdown #建站 #智慧城市 #华为od机试 #华为od机考 #华为od最新上机考试题库 #华为OD题库 #华为OD机试双机位C卷 #od机考题库