我使用如下命令运行了一个redis容器:
docker run --name redis_env --hostname redis \
-p 6379:6379 \
-v $PWD/DBVOL/redis/data:/data:rw \
--privileged=true \
-d redis redis-server
我在本机成功的使用Redis Desktop Manager 链接了这个Redis 服务器,但是当我按照文档使用scrapy-redis搭建分布式爬虫的时候,却得到了拒绝连接的错误提示:
我的settings.py配置为:
# Redis Server设置
REDIS_URL = 'redis://127.0.0.1:6379/0'
# 启用Redis调度存储请求队列
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
# 确保所有的爬虫都通过redis去重
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
# 不清除Redis队列、这样可以暂停/恢复 爬取
SCHEDULER_PERSIST = True
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
#'GeoCrawler.pipelines.GeocrawlerPipeline': 300,
'scrapy_redis.pipelines.RedisPipeline': 300
}
我还尝试了直接使用python console链接redis server,也是没有问题的:
>>> import redis
>>> redis.connection("redis://localhost:6379/0")
Connection<host=redis://localhost:6379/0,port=6379,db=0>
请问这到底是什么原因?如何解决?请各位大神不吝赐教,感谢!!!
问题找到了,是容器的ip问题,容器的ip不对,运行:
得到容器的ip 填进链接字符串就可以了。但我还是不明白,why?我的rdm填写127.0.0.1:6379就可以成功链接?