标签

后端

用 Python subprocess 稳健封装命令行程序:退出码、超时与标准流

来源: realpython.com 26
Python 的 模块不只是“从脚本里执行一条命令”。当你需要包装编译器、媒体工具、运维命令或已有 CLI 时,真正影响可靠性的,是参数传递、退出码、超时,以及标准输出和标准错误的处理方式。 下面从一个可运行的命令包装器出发,梳理这些容易被忽略的细节。 执行外部程序时,推荐把程序名和参数写成列表: 这种写法默认不经过 Shell。Python 会直接启...

PostgreSQL 逻辑复制为何吃满磁盘:从 pg_replslot 泄漏到 streaming 调优

来源: postgr.es 24
PostgreSQL 的逻辑复制通常安静得让人忘记它的存在,直到发布端的 目录突然出现成千上万个文件,磁盘告警随之响起。更棘手的是,这些文件可能在大事务提交后立即消失,只留下一个恢复正常的目录和几项累计统计。 问题往往不是复制槽失效,也不一定是订阅端落后,而是逻辑解码正在为尚未提交的大事务暂存数据。订阅越多,同一份 WAL 就会被重复解码和暂存越多次。...

从“能申请 GPU”到真正可靠:分布式 AI 训练的云原生基础

来源: cncf.io 31
当 AI 训练从单机 GPU 扩展到多个节点时,平台团队面对的问题就不再只是“有没有足够的显卡”。节点之间的网络、数据读取、任务调度、故障恢复、可观测性和资源隔离,都会直接影响训练是否能稳定完成。 因此,给集群装上 GPU 驱动只是起点。真正的 AI-ready 平台,需要把一次分布式训练当成一个完整的云原生工作负载来设计。 单节点训练失败时,排查范围...

从 Python 库到全球存储平台:Habitat 如何支撑 10 亿 ChatGPT 用户

来源: openai.com 36
当一个存储组件只服务少量应用时,Python API、单区域部署和简单的对象读写通常已经足够。但随着 ChatGPT 用户规模扩大到 10 亿、请求峰值达到每秒 2200 万次,存储系统面对的就不再只是“能不能保存数据”,而是全球流量、容量增长、故障隔离和开发效率的综合考验。 OpenAI 分享的 Habitat 演进路径,核心变化是:它从一个 Pyt...

AI 写的 PostgreSQL 索引都能用,为什么还是会拖慢写入

来源: postgr.es 28
现在的编码代理已经很会写 PostgreSQL:GIN、GiST、部分索引、表达式索引、,以及以租户 ID 开头的复合索引,通常都能写对。真正的问题不再是索引无效,而是每个索引单独看都合理,叠到同一张高频更新表上却形成了昂贵的写放大。 一组针对 30 份模型生成 schema 的实验加载并检查了 838 个索引。只有 10 个找不到明确需求,其余大多具...

AIGCPanel v2.3.0:把数字人桌面工具接入自动化工作流

来源: oschina.net 41
AIGCPanel v2.3.0 的关键变化,不是简单增加几个按钮,而是把原本只能在图形界面中操作的 AI 能力开放为 HTTP 接口。声音合成与克隆、口型同步数字人生成、25+ 音视频工具以及智能直播,因此可以被脚本、业务系统和自动化平台调用。与此同时,全工具支持中英双语切换,失败任务也可以继续执行,减少了长流程返工的成本。 图形界面适合人工试用和调...

OpenAI 将 Codex Harness 开放为 Agents API:托管会话与沙箱如何分工

来源: oschina.net 27
OpenAI 正式在开发者文档中上线了 Agents API,把 Codex 使用的 agent harness 通过托管 REST API 暴露给应用开发者。开发者不必从零实现会话编排、上下文压缩和恢复,而是通过一个核心端点创建托管会话;应用自身仍然负责工具提供、权限控制和实际执行环境。 这项变化的重点不是多了一个普通的模型调用接口,而是把“如何持续...

OpsDump v0.1.0:用单进程平台统一数据库备份与任务调度

来源: oschina.net 34
数据库备份工具真正困难的部分,往往不是执行一次 ,而是持续解决定时运行、结果追踪、失败发现和部署维护。OpsDump v0.1.0 将这些能力收进一个基于 GoFrame v2 的单进程平台:使用单二进制交付,以 SQLite 保存平台数据,并通过 Web 页面完成管理,同时兼顾数据库备份和通用任务调度。 当前版本已经实现并跑通,适合用于验证轻量运维平...