做dota2菠菜网站,湖南网站排名优化公司,建设银行官网网站首页纪念币预约,国外网站做任务套利两年来#xff0c;我们项目的爬虫代码大部分都是放在公司的windows机器上运行的#xff0c;原因是服务器太贵#xff0c;没有那么多资源#xff0c;而windows主机却有很多用不上。为了合理利用公司资源#xff0c;降低数据采集成本#xff0c;我在所以任务机器上使用anac…两年来我们项目的爬虫代码大部分都是放在公司的windows机器上运行的原因是服务器太贵没有那么多资源而windows主机却有很多用不上。为了合理利用公司资源降低数据采集成本我在所以任务机器上使用anaconda安装了python环境并将代码部署到每台机器上当有爬虫任务时我就去每台机器启动相应的爬虫脚本。这样的运行方式一直存在了大约两年期间也遇到一些问题如之前使用fastapi写了一个控制服务【masterslave】的方式但是在启动爬虫的过程中存在爬虫起不来或者进程已经存在但由于没有添加详细的管理控制导致日志文件冲突等问题。这些问题我一直有想法去解决但碍于我本人比较懒同时对于正常运行的代码不想修改的等原因导致我一年都没有从根本上解决这个问题。 最近没有什么开发任务我从2月份过年回来也一行代码没写。本着不能让自己荒废的原则我准备重新设计一个系统用于管理多个工作节点的python脚本同时掌握每台机器的资源使用情况实现通过一个主节点对子节点程序进行控制。 下面图片就是现在正在运行的爬虫项目里面的.bat文件对应每一种爬虫在windows下只要双击这个文件就可以启动爬虫关闭对应生成的cmd框就能关闭爬虫简单粗暴。
技术选型
【这里的技术选型会随着开发进程不停得更新】
排除gerapyscrapy
由于我的爬虫代码都不是使用scrapy写的这里我首先排除gerapyscrapy的方案主要原因是每个代码改动过大而且我们的脚本时效性要求高修改为scrapy稳定性存疑加之我也不是使用scrapy的高手这里直接排除。
k8sdocker
我在开发脚本之初就想使用dockerk8s来部署这个分布式的爬虫系统但是由于windows环境下docker运行存在一些稳定性问题同时我没有使用过k8s可能最后开发完了对于日志管理等方面会出现未知的风险我暂时排除这个方案。
python服务控制进程方案【选定】
我在一年前就使用fastapi实现过相应的功能但没有深入到每一个进程只涉及到主启动脚本。在使用过程中也存在了一些问题同时也没有使用日志采集系统监控。由于我有这些经验我这次选型还是准备做纯python服务控制进程的方案这次主要是从0开发维持每一个进程的稳定性【后期采用日志采集监控系统管理日志】。
python服务控制进程方案
这里我还是准备采用fastapi这个框架来作为主服务同时使用mongodb作为数据库redis用于维护进程心跳机制整个后端我自己来构造前端打算集成到我们的爬虫管理系统内。 这里我还是采用一主多从的方案主节点负责控制启停任务心跳检测资源调控【监控每台任务机与服务器的内存与io等参数】
主节点开发
为了实现多节点的控制我将主节点的功能一一列举并对每个功能模块详细的做出设计并记录实现方案。
主节点功能列举
发送启动暂停请求到子节点用于控制爬虫的启停从redis获取心跳参数展示每台机器运行的进程详情监控服务器的资源
子节点开发
子节点功能列举
针对原有爬虫进行修改要求每个爬虫项目只可启动一个进程并且支持强制关闭监控当前节点正在运行的python进程每隔一段时间上报到redis接受主节点的请求对爬虫进程控制【启动/关闭】