Closed opptimus closed 6 months ago
CPU: KindleEar没有特别复杂的CPU计算需求,主要耗时在网络请求上,所以CPU单核即可,并发只用到多线程,暂时没有使用多进程,购买多核就是浪费。
内存: 如果使用磁盘缓存(默认配置,config.py里面的KE_TEMP_DIR),内存需求不大,一般300M以下,所以1G内存足以。
磁盘: 至于磁盘大小,应用代码占用空间不大,KindleEar的Docker镜像解压后大约200M,加上docker本身的空间大约300M(蒙的),再加日志文件之类的,我认为1G足以。 剩下的就是生成电子书过程中的临时文件,临时文件不好计算,文本还好,大小有数,但是如果你抓取的原始图像文本本身很大,就会特别占用临时空间(KindleEar最终将其压缩为设备屏幕分辨率大小,可能从几M甚至几十M压缩到几十k或几百k)。
给个估算,临时封顶按最终epub文件大小的10倍左右吧,一般会少一些。 这个是每个epub的单独封顶计算,如果推送的是多个epub,则按一个最大的尺寸计算即可,因为生成每个电子书后这个电子书的临时文件就马上被删除了。
这么说来,2G磁盘空间足够用的了。
结论: 按照现在的VPS价格,如果只需要部署KindleEar,不需要有配置焦虑,买入门的即可,有钱任性除外~
我又仔细考虑了你这个问题,我之前的答复浅薄了,用我的小农思维丈量工业化大生产了。
既然你有几百个RSS,则必须需要多进程,否则什么时候能爬完? 不过好消息是KindleEar本身的架构是支持多进程的,只是我默认提供的Docker镜像不支持而已。 需要你修改配置即可启用多进程,最简方法就是使用redis代替内存队列即可到gunicorn.conf.py或default.conf配置文件里面启用多进程。
在有效分割RSS的情况下,多进程可以有效的提高爬取效率,每个进程一次爬一本电子书,每个线程一次爬一篇文章。
所以照你这个情况,多核还是很有必要的,一旦多进程,则内存需求也会相应增加。
还有,要在网页上管理几百个rss可能也是一个灾难,建议使用脚本进行管理,已经有一些api接口了(用于AJAX),但是可能不够,如果你需要,可以提一些建议甚至pull request.
1.再次感谢大佬回复 2.我去研究下如何启用多进程的参数,但愿仅仅是改个布尔值,而不是让我写一段代码 3.实际上我之前用的旧版kindleear是采用七八个账户分类跑这几百个RSS源,同时避免单一epub文件超过30M,否则超出最大收取大小,亚马逊的kindle服务也不收纳 4.实际上这百个RSS大部分是公众号订阅源,并且是付费转换的,由于懒惰和无能,一直没能学会爬公众号转换成订阅源,把技术掌握在自己手中
在:https://github.com/cdhigh/KindleEar/blob/master/docker/gunicorn.conf.py 这个文件中,找到了workers = 1和threads = 3 两个参数 是不是我把这两个数改的稍稍大一些,就可以变成多线程
改进程数量。
如果使用gunicorn
改gunicorn.conf.py里面的行
workers = 1
将1改成你需要的数量就行,还需要博士学位吗~
如果使用 nginx
默认配置一般是自动 (auto),一个核心跑一个进程,如果不是,可以修改配置文件。
worker_ processes 1;
还是改里面的数字
如果使用Caddy 进程数量是自动的,一个核心一个进程,好像不能设置具体跑多少个进程,但是可以设置进程上限,我也是之前配置Caddy时看了一遍其文档而已,不知理解是否正确。
还有,老版本的KindleEar的opml导出功能对xml字符的转义和新版本的不一致(老版本是我臆想的转义方式,现在我发现其他的rss阅读器都不那样做), 可能导出导入会有一些问题。 如果你会写脚本,本地处理一下,就是使用unquote()转换一下里面的链接。
(算了,我稍后还是添加一个脚本好了,转换老版本的opml到新版本格式)
感谢大佬的积极回复,我尽快试验一下
在:https://github.com/cdhigh/KindleEar/blob/master/docker/gunicorn.conf.py 这个文件中,找到了workers = 1和threads = 3 两个参数 是不是我把这两个数改的稍稍大一些,就可以变成多线程
是的,workers是进程数,threads是线程数,
记得如果要改成多进程,同时要修改TASK_QUEUE_BROKER_URL为除memory以外的配置,否则你会发现推送失败。
首先感谢大佬这么多年一直运营这个项目,最近又进行了重构和脱胎换骨的升级! 近期打算购买个国外的VPS专门跑这个kindleear,请问: 1.我要抓取的网页很多都是墙外的,阿里云那种机房在国内城市的,是不是IP就是国内的,肯定抓取不了? 2.假设我使用ubuntu+docker方案,每两天需要抓取280个RSS源,每两天共计生成150M左右的多个epub文件,大概需要多少大小系统盘 SSD Size?以及需要多大的内存?能否从这个页面推荐一台VPS:https://cws-docs.pages.dev/zh/support/vps.html 3.再次感谢大佬