Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
357 views
in Technique[技术] by (71.8m points)

python - stop overriding scrapy settings.py

I'm using subprocess to run several scrapy spiders in parallel like this:

processes = [Popen(['scrapy', 'crawl', 'myspider', '-a', 'custom_argument={}'.format(argument)]) 
             for argument in custom_arguments]

while processes:
    for p in processes[:]:
        if p.poll() is not None:
            processes.remove(p)

To enter custom arguments into each spider via subprocess my spider starts like this:

class myspider(scrapy.Spider):
    
    name = 'myspider'

    def __init__(self, custom_argument=None, *args, **kwargs):    
        super(myspider, self).__init__(*args, **kwargs)
        ...
    
    def start_requests(self):
        ...

This seems to work fine except the settings I chose in settings.py get overridden:

2021-01-06 16:57:16 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': 'True', 'AUTOTHROTTLE_START_DELAY': '0.5', 'BOT_NAME': 'openrent', 'COOKIES_ENABLED': False, 'NEWSPIDER_MODULE': 'openrent.spiders', 'SPIDER_MODULES': ['openrent.spiders'], 'USER_AGENT': 'Safari/537.36'}

How do I stop original settings getting overridden like this?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is not an error

This log line means that settings from scrapy default settings was replaced by settings defined in settings.py file from your project.

setting name scrapy default settings value your settings.py value
AUTOTHROTTLE_ENABLED False True
AUTOTHROTTLE_START_DELAY 5.0 0.5
BOT_NAME scrapybot openrent
COOKIES_ENABLED True False
NEWSPIDER_MODULE `` openrent.spiders
SPIDER_MODULES [] ['openrent.spiders']
USER_AGENT Scrapy/2.4 (+https://scrapy.org) Safari/537.36

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...