私信  •  关注

灵翼ä¿

çµç¿¼ä¿ 最近创建的主题
çµç¿¼ä¿ 最近回复了
5 年前
回复了 çµç¿¼ä¿ 创建的主题 » 被redis阻塞的碎片

我不熟悉Scrapy Redis,我只知道它通过lpush url使用Redis,但是我必须在Redis中使用publish/subscription,所以我采用了这样一种方法:

    def start_requests(self):
    while True:
        try:
            msg = self.redis_sub.parse_response(block=False, timeout=5)
            if msg[0] != b'message':
                continue
            data = json.loads(msg[2].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_retry': True})
        except Exception as e:
            yield SplashRequest()
            print(e)

事实证明是可行的。