一、问题

      晚上uv sync 评估依赖的时候,总是卡死cursor, 早上依旧如此,现在准备一步步排查问题了。

二、排查

1. 网络测试,PyPI 连接

ping pypi.org

        ping命令成功发送了多个数据包(icmp_seq从4到16),并且每个数据包都收到了回复,时间在129-132ms之间,TTL为50。这表明网络连接到pypi.org是正常的,没有网络问题。

2. 可能是某些特定包下载慢或者失败,现在换用其他镜像源

        原本用的是清华镜像源

        换用阿里云镜像依旧卡死。

3 下载虚拟环境锁残留、缓存损坏

        虚拟环境锁残留:之前多次强制中断进程,导致 .venv/.lock 锁文件未被正常清理,新进程一直等待锁释放;

        缓存损坏:旧的缓存文件校验失败,导致反复重试

4 风控限流

        uv 旧版本默认的下载并发数很高(默认数十级并发),短时间内向阿里云、清华源等镜像站发起大量并发请求,很容易触发站点的 IP 连接数限流 / 风控策略,表现为连接被挂起、长时间无输出,也就是我所看到的 “卡死”。

        将并发降到 4 后流程就顺利跑完,应该就是这个问题了,代码如下,单行临时设置并发,如需全局设置,需要写入环境变量,再同步执行     。

#临时设置
UV_CONCURRENCY=4 uv sync --index-url https://mirrors.aliyun.com/pypi/simple/ --refresh -v

#全局配置
# 写入配置文件,永久生效
echo 'export UV_CONCURRENCY=4' >> ~/.bashrc
source ~/.bashrc

# 执行同步
uv sync --index-url https://mirrors.aliyun.com/pypi/simple/ --refresh -v

        单行执行输出效果如下图。

三、总结

        镜像源网站通常会有单IP高并发请求限制,其实也是无可厚非。因为这样有以下好处:

1.防止DDoS攻击

  • 保护服务器免受恶意大量请求的攻击
  • 限制异常流量模式

2.服务器资源保护

  • 避免单个IP占用过多带宽和CPU资源
  • 确保所有用户都能公平使用服务

3. 成本控制

  • 高并发请求会增加服务器负载和带宽成本
  • 限制可以控制运营成本

4. 服务稳定性

  • 防止因某个用户的大流量导致整个服务崩溃
  • 维护镜像源的稳定性和可用性

5. 公平使用原则

  • 确保多个用户都能获得良好的访问体验
  • 避免"带宽霸占"现象

        总结下来就是网站本身的安全、成本、稳定性以及其他用户的角度考虑才有了诸多限制。常见的限制策略主要有:下载速率限制、同时建立的连接数有限、对异常行为的IP进行临时或永久封禁、以及要求用户验证身份的验证机制。

        

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐