mirror of https://github.com/scrapy/scrapy.git
Per-spider settings implementation
This commit is contained in:
parent
ccde3317d7
commit
4932ec43a7
|
|
@ -96,7 +96,12 @@ class CrawlerRunner(object):
|
|||
def _create_crawler(self, spidercls):
|
||||
if isinstance(spidercls, six.string_types):
|
||||
spidercls = self.spiders.load(spidercls)
|
||||
crawler = Crawler(spidercls, self.settings.frozencopy())
|
||||
|
||||
crawler_settings = self.settings.copy()
|
||||
spidercls.update_settings(crawler_settings)
|
||||
crawler_settings.freeze()
|
||||
|
||||
crawler = Crawler(spidercls, crawler_settings)
|
||||
return crawler
|
||||
|
||||
def stop(self):
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ SETTINGS_PRIORITIES = {
|
|||
'default': 0,
|
||||
'command': 10,
|
||||
'project': 20,
|
||||
'spider': 30,
|
||||
'cmdline': 40,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ class Spider(object_ref):
|
|||
"""
|
||||
|
||||
name = None
|
||||
custom_settings = {}
|
||||
|
||||
def __init__(self, name=None, **kwargs):
|
||||
if name is not None:
|
||||
|
|
@ -66,6 +67,10 @@ class Spider(object_ref):
|
|||
def parse(self, response):
|
||||
raise NotImplementedError
|
||||
|
||||
@classmethod
|
||||
def update_settings(cls, settings):
|
||||
settings.setdict(cls.custom_settings, priority='spider')
|
||||
|
||||
@classmethod
|
||||
def handles_request(cls, request):
|
||||
return url_is_from_spider(request.url, cls)
|
||||
|
|
|
|||
Loading…
Reference in New Issue