SpiderKeeper Git地址, 因为我们有10台爬虫机器,250个爬虫,于是安排同事使用spiderkeeper管理,但是在deploy环节,50个爬虫的时候,就发布不上去了,逼的我没办法,只能看源码,分析upload做了什么。
1 调试准备
调试的环境我是windows,故执行pip install scrapyd
进行安装,更改scrapyd的配置
将bind_address = 127.0.0.1
更改为bind_address = 0.0.0.0
然后执行scrapyd
启动,
2 spiderkeeper启动
配置了两台scrapyd
就可以发现有俩个实例
3 创建project
创建project比较简单,通过下图操作添加就可以
而spider的产生,是通过定时任务进行的,源码默认的是每10s执行一次
那么这些爬虫任务来自哪里呢,跟踪发现他会从默认第一个sever中获取,发送listspiders.json请求,并将爬虫清单写入到sk_spider中
4 egg上传
egg文件上传做了啥流程如下,最关键的就是通过addversion.json将egg远程发布,这个环节执行时间较长。参考Scrapyd API说明
既然了解到原理,我就没必要通过egg上传的方式,费时费力,还启动不了。
操作很简单,按照第2.4章 远程部署scrapyd工程,接着启动
nohup spiderkeeper --server=http://localhost:6800 --server=http://10.101.3.166:6800 --server=http://10.101.3.167:6800 --server=http://10.101.3.168:6800 --server=http://10.101.3.169:6800 --server=http://10.101.3.171:6800 --server=http://10.101.3.172:6800 --server=http://10.101.3.173:6800 --server=http://10.101.3.174:6800 --server=http://10.101.3.175:6800 &
spiderkeeper源码安装和卸载命令如下
python setup.py install --record files.txt 记录安装后文件的路径
cat files.txt | xargs rm -rf 删除这些文件