我用一个scrapy spider作为消费者,还有一个生产者生产url,不定期放到redis中,我的代码如下:
def start_requests(self):
for msg in self.redis_sub.listen():
data = json.loads(msg['data'].decode('utf-8'))
id = data['id']
styleUrl = data['styleUrl']
pageCount = data['pageCount']
self.obi.public(json.dumps({'id': id, 'isSynchronized': 1}))
yield SplashRequest(url=styleUrl, callback=self.specHome_parse,
args={'wait': 5, 'timeout': 60, 'images': 0},
meta={'pageCount': pageCount, 'id': id, 'dont_redirect': True})
代码可以正常接收url,但是当它阻塞在第二行等待url时,所有的scrapy都暂停了,包括之前yield的请求。我认为它应该继续运行旧的请求,这是什么原因以及如何解决它?请帮助我
最佳答案
使用Scrapy-Redis而不是重新发明轮子。参见 Feeding a Spider from Redis .
关于python - scrapy 被 redis 阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54324024/