Scrapy - изменение настроек во время выполнения на основе предоставленного атрибута - PullRequest
0 голосов
/ 04 февраля 2019

Мне весело с scrapy, я работаю над этим проектом , пауком для постов в Facebook.

Я бы хотел изменить параметр CONCURRENT_REQUESTS в settings.py на время выполнения , если указан логический атрибут

Я попытался переписать метод 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?Thx!

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

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

....

0 голосов
/ 05 февраля 2019

Я только что заметил, что так как я могу просто использовать "-s CONCURRENT_REQUESTS = 32" во время выполнения.Другим вариантом было бы перезаписать метод update_settings, вот справка для всех, кто сталкивается с этой проблемой: Обновление настроек scrapy на основе свойства паука

...