关于Freshrss 1.27和Rsshub同时使用时出现的问题

关于Freshrss 1.27和Rsshub同时使用时出现的问题

问题描述

暄穗在使用freshrss在服务器中作为远程rss阅读器的时候最近发现了问题,就是和rsshub同时使用的时候总是会有freshrss“力不从心”的情况:抓取的数量很少,通过管理页面看订阅的feed会红一大片,但是自己手动用浏览器打开rsshub订阅发现是可以打开的。也就是说明明rsshub订阅是没有问题,但是Freshrss就是不抓。看得仔细一点会发现Freshrss确实抓了几个我的rsshub,然后就不抓了,通过Rsshub的日志也能看见Freshrss红的订阅根本没有请求抓取(加把劲啊Freshrss!你为什么才抓几个就累了!)。

原因说明

这其实是Fresh 1.27的新特性,如果打开日志可以看见一堆关于红色feed的描述“For that domain, will first retry after”,也就是说Freshrss确实知道他要抓取这个feed,但是他跳过了,说下一次抓取。而下一次他又是同样的说法,于是就永远看不到这个feed的订阅了……

Retry After是1.27的新机制,这个机制可以降低Freshrss的抓取负担。比如说我订阅了一个音乐新闻网站的“信息贴”,“新闻贴”和“求助帖”三个不同的feed,如果Freshrss第一个请求“信息贴”抓取失败了,那Freshrss就知道这个网站暂时无法抓取,相同域名下的“新闻贴”和“求助帖”本次抓取就会跳过,下一次再试。

通过举例可以理解这个新机制的好处,但是对于我这样的rsshub用户来说这就是致命打击:首先Rsshub部署基本都是一个域名,其次Rsshub抓取因为自己的配置导致各个网站的成功率不一样。比如说我的Rsshub抓取bilibili的订阅非常流畅,但是抓取weibo经常会失效(原因正在排查)。那么如果我用Rsshub订阅了100个bilibili和一个weibo,Freshrss在抓取完23个bilibili订阅之后灵机一动抓了那个weibo,得到报错之后剩下的77个bilibili也不会去抓了。

解决方法

目前在Github已经有人针对相同的问题提出了issue,开发者也将这个提上了日程。而目不知道下一个版本的Freshrss会什么时候公布只能自己想办法了。

首先是退版本。既然是1.27出了问题那回到上一个版本1.26.3肯定是没有错的。

其次是使用更稳定的订阅源或删除订阅出问题的订阅源。在我删除了微博的抓取之后我的Freshrss破天荒抓完了我在Rsshub的所有订阅,可喜可贺。另外在我更新Weibo的cookie到Rsshub让weibo的抓取成功显示之后也没有红一大片的情况了。

相关读物:

[Feature] Improve “Retry-After” feature to give users more control, especially for RSSHub 改进“Retry-After”功能以给予用户更多控制权,特别是针对RSSHub用户 · Issue #7880 · FreshRSS/FreshRSS,

[错误] 1.27:503/429 上的域范围“Retry-After”会阻止同一主机上的所有源(RSSHub 用例)。请添加每个 Feed 范围或切换 ·问题 #7870 ·FreshRSS/FreshRSS