ruia icon indicating copy to clipboard operation
ruia copied to clipboard

Feat: process_start_urls in parallel

Open aircloud opened this issue 1 year ago • 2 comments

process_start_urls 目前会阻塞下方 workers,这样要求使用者一开始就有所有 url 有的时候 url 可能是从某个接口或者消息队列持续地获取到的,一开始并没有。

因此我的改法是将其并行化,作者有空烦请看看这样是否有问题。

aircloud avatar Jun 07 '23 15:06 aircloud

确实有这个问题,ruia会一次获取所有的url再开始爬取

有的时候 url 可能是从某个接口或者消息队列持续地获取到的,一开始并没有。

为什么不在外层你获取到一个url就丢到ruia实现的Spide类去执行,如:

class DemoSpider:
    pass


async for url in mq_urls:
    DemoSpider.starts_url = [url]
    await DemoSpider.start()

还是我理解错了你的意思?

howie6879 avatar Jun 08 '23 01:06 howie6879

按照上面的写法的话,我理解相当于:获取一个、执行一个、再获取一个

这样是不是没办法用它的并发能力了?

aircloud avatar Jun 08 '23 04:06 aircloud