scrapy 的 spider 抓取了很多 item 然后交给 pipeline, 但是 pipeline 处理的太慢了,我的业务很耗时,但是 spider 还在不停抓取,导致任务积压
我目前打算使用 arq(异步消息框架) spider 抓到的 item 直接扔给 arq,扔之前查看任务队列是否过多,可以暂停发布任务
各位有好的想法吗
1
Rang666 1 天前 via Android
内存不够就放硬盘存着?
|
2
CaptainD 1 天前
无非就几个方法
1. 减缓 item 发布:例如你的方式,或者降低 spider 速度等 2. 增大缓冲区,例如引入新的队列、持久化 pipeline 等 3. 增大 pipeline 处理速度,并发或者异步等 |
3
shuimugan 1 天前
scrapy 出来的时候还没什么 serverless 的概念,都是靠堆机器的方式来增加抓取规模,但是它的 IO 和计算没有分离,必然造成你现在这个局面。
一旦你加入队列来把 IO 和计算分离之后,你会发现你也用不上什么 scrapy 自己的东西了。 除非你的清洗是视频转码之类的众生平等的耗时任务,如果是单纯搞搞字符串之类的,可以使用 cloudflare worker 把计算部分分离出去,甚至把 IO 部分也可以分离出去( IO 等待不计时,deno deploy 也是)。 |
4
mayli 1 天前
CONCURRENT_ITEMS
|