bilibili-api项目中视频上传域名故障分析与解决方案

bilibili-api项目中视频上传域名故障分析与解决方案

【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 【免费下载链接】bilibili-api 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-api

在bilibili-api项目使用过程中,开发者发现了一个与视频上传功能相关的域名解析问题。该问题表现为当用户尝试上传视频文件时,系统会抛出"Name or service not known"错误,导致上传流程中断。

问题现象

错误日志显示,系统在调用视频上传探针功能时,无法解析upos-cs-upcdnws.bilivideo.com这个域名。具体报错信息如下:

Error: [Errno -2] Name or service not known
[2024-10-17 21:29:35,235: WARNING/ForkPoolWorker-2] File "/usr/local/lib/python3.11/site-packages/bilibili_api/video_uploader.py", line 91, in _probe
httpx.post(f'https:{line["probe_url"]}', data=data, timeout=timeout)

问题根源

通过分析项目代码和配置,发现问题出在视频上传的CDN探测配置中。bilibili-api项目使用了一个包含多个CDN节点的配置文件,其中"ws"节点的配置指定了upos-cs-upcdnws.bilivideo.com作为探测地址。当这个域名无法解析时,就会导致整个上传流程失败。

解决方案

临时解决方案是修改项目配置,移除或注释掉包含故障域名的"ws"节点配置。具体配置修改如下:

"ws": {
    "os": "upos",
    "upcdn": "ws",
    "probe_version": 20221109,
    "query": "upcdn=ws&probe_version=20221109",
    "probe_url": "//upos-cs-upcdnws.bilivideo.com/OK"
}

开发者可以:

  1. 直接删除这个配置节点
  2. 或者将probe_url改为其他可用的CDN节点地址

技术背景

bilibili-api项目中的视频上传功能采用了多CDN探测机制,这是为了提高上传的可靠性和速度。系统会尝试连接多个CDN节点,选择最优的上传路径。当某个CDN节点不可用时,理论上系统应该自动切换到其他可用节点。然而在这个案例中,由于域名解析失败,导致整个探测流程中断。

最佳实践建议

  1. 配置冗余:确保配置中包含多个可用的CDN节点,避免单一节点故障影响整体功能
  2. 错误处理:增强代码中的错误处理逻辑,当某个节点不可用时自动跳过而不是中断流程
  3. 定期维护:定期检查并更新CDN节点配置,移除不可用的节点
  4. 监控机制:实现自动化的CDN节点健康检查,及时发现并处理故障节点

总结

这个案例展示了分布式系统中常见的服务依赖问题。在实际开发中,对于外部服务的依赖应该设计合理的容错机制。bilibili-api作为一个开源项目,其视频上传功能依赖于B站的CDN基础设施,开发者在使用时应当注意这类依赖关系,并做好相应的异常处理。

【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 【免费下载链接】bilibili-api 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-api

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值