python - Scrapy - 根据提供的属性在运行时更改设置
问题描述
我很喜欢scrapy,在这个项目上工作,一个Facebook帖子的蜘蛛。
如果提供了布尔属性,我想在运行时更改 settings.py 中的 CONCURRENT_REQUESTS 参数
我尝试如下覆盖from_crawler方法,但似乎不起作用
@classmethod
def from_crawler(cls, crawler, **kwargs):
settings = cls(crawler.settings)
if 'conc' in kwargs:
settings.set('CONCURRENT_REQUESTS',32)
return settings
你能告诉我如何正确,以及如何更改__init__。我应该移动 from_crawler 中解析的所有属性吗?谢谢!
解决方案
CONCURRENT_REQUESTS
scrapy.core.downloader.total_concurrency中使用的设置。
设置本身是不可变的。但是scrapy.core.downloader
对象是可变的。
您可以从蜘蛛方法动态更改此值。
class FacebookSpider(scrapy.Spider):
.......
def __init__(self, *args, **kwargs):
if 'conc' in kwargs:
self.crawler.engine.downloader.total_concurrency = 32
……
推荐阅读
- c - 为什么函数式代码比 C 中的命令式代码快得多?
- sql - 即使在 SQL 中删除 Null 值(红移),它也会继续显示在 Excel 中
- qemu - libvirt 无法打开符号链接映像
- javascript - 为 contenteditable html 选项取消 btn
- extjs - 为我的视图实现路由系统(ExtJS)
- html - 导航栏菜单列表不会出现在响应式上
- matlab - MathNET.Numerics 中 Matlab sortrows() 的等效功能?
- python - 带有while循环和中断的Python函数以查找连续计数
- snowflake-cloud-data-platform - Snowflake 的 split_part 功能有限制吗?
- java - 由于开销,此并发代码是否较慢?还是有别的东西在起作用?