谷歌,百度都翻烂了,也没找到在windows上分布式部署pyspider的例子,几乎绝望了。
查资料发现pyspider是通过redis传输任务。
只好开始一无所知的瞎折腾,总算是有点结果。slave上的fetcher,processor,result_worker三个模块都有信息在输出,我想,这应该是成功了。
=======================废话结束=================
首先安装redis
安装好后将redis.windows.conf中
bind 127.0.0.1 改为 bind 0.0.0.0 #这样修改是为了让其它机器可以访问本机redis
protected-mode yes 改为protected-mode no #在redis3.2之后,redis增加了protected-mode,在这个模式下,即使修改掉了bind 127.0.0.1,再访问redisd时候还是报错。
在redis目录下建立redis.6380.conf文件,6380是redis的端口,默认是6379,我这里修改成了6380,在redis.windows.conf也需要修改port 6379为port 6380
port 6380
loglevel notice
logfile ""D:/Redis/Logs/redis6380_log.txt""
appendonly yes
appendfilename ""appendonly.6380.aof""
cluster-enabled yes
cluster-config-file nodes.6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
运行 redis-server.exe redis.windows.conf
的config.conf配置:
{
""taskdb"": ""mysql+taskdb://pyspider:pyspider-pass@192.168.209.128:3306/taskdb"",
""projectdb"": ""mysql+projectdb://pyspider:pyspider-pass@192.168.209.128:3306/projectdb"",
""resultdb"": ""mysql+resultdb://pyspider:pyspider-pass@192.168.209.128:3306/resultdb"",
""message_queue"": ""redis://127.0.0.1:6380/db"",
""logging-config"": ""/pyspider/logging.conf"",
""phantomjs-proxy"": ""/127.0.0.1:25555"",
""fetcher"": {
""xmlrpc-host"": ""0.0.0.0""
},
""scheduler"": {
""xmlrpc-host"": ""0.0.0.0"",
""delete-time"": 10
},
""webui"": {
""port"": 5000,
""username"": """",
""password"": """",
""need-auth"": false
}
}
在master上运行:
pythona run.py -c E:/Spider/Spider/pyspider/config.json scheduler
pythona run.py -c E:/Spider/Spider/pyspider/config.json webui
pythona run.py -c E:/Spider/Spider/pyspider/config.json result_worker
slave 上运行:
python run.py -c E:/Spider/Spider/pyspider/config.json fetcher
python run.py -c E:/Spider/Spider/pyspider/config.json processor
以上方法也是我自己瞎折腾出来的,其中的原理还需要再进一步的研究。