最新资讯

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

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

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

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