怪不得我用sub2api时用不了ws连接,原来是sub2api的cache有BUG...

怪不得我用sub2api时用不了ws连接,原来是sub2api的cache有BUG...
怪不得我用sub2api时用不了ws连接,原来是sub2api的cache有BUG...

Stream disconnected before completion: websocket closed by server before response.completed

如果佬们用过sub2api反代openai时如果打开websocket连接的话,一定会看到上面的提示,即使你在账号管理里对每个账号的WS Mode都开启了passthrough透传,你还是无法使用WS协议连接。

这就导致必须到config.toml配置文件里关掉站点的websocket支持,不然每次都会优先尝试WS协议去重试5次才会退回普通的流式。


今天心血来潮去sub2api的github上看了下,发现了官方合并了Merge pull request from KnowSky404/fix/ws-codex-scheduler-cache-1662这个pr。

pr

由于官方还没有发版所以我本地pull打包了试了一下,发现还真是可以使用websocket协议了,不会再出现上面提示的错误了。

我的日志

看了一下pr内容,

pr内容

原来BUG产生的原因是:scheduler_cache在生成账号cache时没有把WS字段写入 redis cache。scheduler选账号时优先读取的是这个快照,而不是数据库原始账号,即使你把账号的 WS Mode 设为 透传(passthrough),scheduler 从 cache 看到的仍然是“没有 WS 能力”(或者说WS Mode被设置成关闭)的账号。即便 cache miss 后回源数据库重新构建 cache ,由于 cache 写入逻辑本身就漏字段,重建出来的仍然是错误 cache,所以 WS 选账号时会长期返回 no available OpenAI accounts。

no available OpenAI accounts

现在opus 4.7也更新了,希望官方尽快发版吧,WS协议我的体感比普通的流式好很多。

2 个帖子 - 2 位参与者

阅读完整话题

来源: linux.do查看原文