问题描述
暄穗在使用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的抓取成功显示之后也没有红一大片的情况了。
相关读物: