解决Scrapy性能问题——案例二(含有阻塞的代码)

当Scrapy项目运行缓慢时,可能是因为存在阻塞代码导致并发性失效。例如,设置的阻塞延迟会导致100个URL请求耗时约13秒而非预期的2-3秒。阻塞可能发生在爬虫或pipeline中,可通过禁用pipeline逐一排查。解决方案包括使用异步代码或Twisted线程池,以及通过日志分析定位问题。
摘要由CSDN通过智能技术生成

症状:系统非常慢,与期望的相差很大,并且当你修改CONCURRENT_REQUESTS的值的时候,速度并没有发生变化。下载器看起来几乎是空的(比CONCURRENT_REQUESTS的值要小),scraper中只有少量一些Response对象。

示例:你可以使用这两个设置项(爬虫代码见这里):SPEED_SPIDER_BLOCKING_DELAYSPEED_PIPELINE_BLOCKING_DELAY来使得对于每个响应都会有一个100ms的阻塞延迟。我们希望对于100个URL花费2-3s来完成,然而不管如何设置CONCURRENT_REQUESTS的值,结果都是花费了13s左右。

for concurrent in 16 32 64; do
    time scrapy crawl speed -s SPEED_TOTAL_ITEMS=100<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值