rearranged and sorted out default scrapy settings. closes #20

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40586
This commit is contained in:
Pablo Hoffman 2008-12-30 13:34:57 +00:00
parent 1f247b1efc
commit d047409579
4 changed files with 185 additions and 35 deletions

View File

@ -11,14 +11,14 @@ class Settings(object):
overrides = None
settings = None
defaults = None
core = None
global_defaults = None
def __init__(self):
pickled_settings = os.environ.get("SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE")
self.overrides = pickle.loads(pickled_settings) if pickled_settings else {}
self.settings = self._import(SETTINGS_MODULE)
self.defaults = {}
self.core = self._import('scrapy.conf.core_settings')
self.global_defaults = self._import('scrapy.conf.default_settings')
def _import(self, modulepath):
return __import__(modulepath, {}, {}, [''])
@ -36,8 +36,8 @@ class Settings(object):
if opt_name in self.defaults:
return self.defaults[opt_name]
if hasattr(self.core, opt_name):
return getattr(self.core, opt_name)
if hasattr(self.global_defaults, opt_name):
return getattr(self.global_defaults, opt_name)
def get(self, name, default=None):
return self[name] if self[name] is not None else default

View File

@ -1,30 +0,0 @@
import scrapy
# Scrapy core settings
BOT_NAME = 'scrapy'
BOT_VERSION = scrapy.__version__
ENGINE_DEBUG = False
# Download configuration options
USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)
DOWNLOAD_TIMEOUT = 180 # 3mins
CONCURRENT_DOMAINS = 8 # number of domains to scrape in parallel
REQUESTS_PER_DOMAIN = 8 # max simultaneous requests per domain
CACHE2_EXPIRATION_SECS = 48 * 60 * 60 # seconds while cached response is still valid (a negative value means "never expires")
LOG_ENABLED = True #
LOGLEVEL = 'DEBUG' # default loglevel
LOGFILE = None # None means sys.stderr by default
LOG_STDOUT = False #
DEFAULT_ITEM_CLASS = 'scrapy.item.ScrapedItem'
SCHEDULER = 'scrapy.core.scheduler.Scheduler'
MEMORYSTORE = 'scrapy.core.scheduler.MemoryStore'
PRIORITIZER = 'scrapy.core.prioritizers.RandomPrioritizer'
EXTENSIONS = []
# contrib.middleware.retry.RetryMiddleware default settings
RETRY_TIMES = 2 # initial response + 2 retries = 3 requests
RETRY_HTTP_CODES = ['500', '503', '504', '400', '408', '200']

View File

@ -0,0 +1,179 @@
"""
This module contains the default values for all settings used by Scrapy.
For more information about these settings you can read the settings
documentation in docs/reference/settings.rst
Scrapy developers, if you add a setting here remember to:
* add it in alphabetical order
* group similar settings without leaving blank lines
* add its documentation to the available settings documentation
(docs/reference/settings.rst)
"""
from os.path import join, abspath, dirname
ADAPTORS_DEBUG = False
BOT_NAME = 'scrapybot'
BOT_VERSION = '1.0'
CACHE2_DIR = ''
CACHE2_IGNORE_MISSING = False
CACHE2_SECTORIZE = True
CACHE2_EXPIRATION_SECS = 0
CLOSEDOMAIN_TIMEOUT = 0
CLOSEDOMAIN_NOTIFY = ['pablo@insophia.com']
CLUSTER_LOGDIR = ''
CLUSTER_MASTER_PORT = 8790
CLUSTER_MASTER_ENABLED = 0
CLUSTER_MASTER_POLL_INTERVAL = 60
CLUSTER_MASTER_NODES = {}
CLUSTER_MASTER_CACHEFILE = ""
CLUSTER_WORKER_ENABLED = 0
CLUSTER_WORKER_MAXPROC = 4
CLUSTER_WORKER_PORT = 8789
COMMANDS_MODULE = ''
COMMANDS_SETTINGS_MODULE = ''
CONCURRENT_DOMAINS = 8 # number of domains to scrape in parallel
DEFAULT_ITEM_CLASS = 'scrapy.item.ScrapedItem'
DEPTH_LIMIT = 0
DEPTH_STATS = True
DOWNLOAD_TIMEOUT = 180 # 3mins
DOWNLOADER_MIDDLEWARES = [
# Engine side
'scrapy.contrib.downloadermiddleware.errorpages.ErrorPagesMiddleware',
'scrapy.contrib.downloadermiddleware.cookies.CookiesMiddleware',
'scrapy.contrib.downloadermiddleware.httpauth.HttpAuthMiddleware',
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware',
'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware',
'scrapy.contrib.downloadermiddleware.common.CommonMiddleware',
'scrapy.contrib.downloadermiddleware.redirect.RedirectMiddleware',
'scrapy.contrib.downloadermiddleware.compression.CompressionMiddleware',
'scrapy.contrib.downloadermiddleware.debug.CrawlDebug',
'scrapy.contrib.downloadermiddleware.stats.DownloaderStats',
'scrapy.contrib.downloadermiddleware.cache.CacheMiddleware',
# Downloader side
]
DOWNLOADER_STATS = True
ENABLED_SPIDERS_FILE = ''
ENGINE_DEBUG = False
EXTENSIONS = [
'scrapy.stats.corestats.CoreStats',
'scrapy.xpath.extension.ResponseLibxml2',
'scrapy.management.web.WebConsole',
'scrapy.management.telnet.TelnetConsole',
'scrapy.contrib.webconsole.schedstats.SchedulerStats',
'scrapy.contrib.webconsole.livestats.LiveStats',
'scrapy.contrib.webconsole.spiderctl.Spiderctl',
'scrapy.contrib.webconsole.enginestatus.EngineStatus',
'scrapy.contrib.webconsole.stats.StatsDump',
'scrapy.contrib.webconsole.spiderstats.SpiderStats',
'scrapy.contrib.spider.reloader.SpiderReloader',
'scrapy.contrib.memusage.MemoryUsage',
'scrapy.contrib.memdebug.MemoryDebugger',
'scrapy.contrib.pbcluster.ClusterWorker',
'scrapy.contrib.pbcluster.ClusterMasterWeb',
'scrapy.contrib.pbcluster.ClusterCrawler',
'scrapy.contrib.closedomain.CloseDomain',
'scrapy.contrib.debug.StackTraceDebug',
'scrapy.contrib.response.soup.ResponseSoup',
]
GROUPSETTINGS_ENABLED = False
GROUPSETTINGS_MODULE = ''
# Item pipelines are typically set in specific commands settings
ITEM_PIPELINES = []
LOG_ENABLED = True
LOG_STDOUT = False
LOGLEVEL = 'DEBUG'
LOGFILE = None
MAIL_HOST = 'localhost'
MAIL_FROM = 'scrapy@localhost'
MEMDEBUG_ENABLED = False # enable memory debugging
MEMDEBUG_NOTIFY = [] # send memory debugging report by mail at engine shutdown
MEMORYSTORE = 'scrapy.core.scheduler.MemoryStore'
MEMUSAGE_ENABLED = 1
MEMUSAGE_LIMIT_MB = 0
MEMUSAGE_NOTIFY_MAIL = []
MEMUSAGE_REPORT = False
MEMUSAGE_WARNING_MB = 0
MYSQL_CONNECTION_SETTINGS = {}
NEWSPIDER_MODULE = ''
PRIORITIZER = 'scrapy.core.prioritizers.RandomPrioritizer'
REQUESTS_QUEUE_SIZE = 0
REQUESTS_PER_DOMAIN = 8 # max simultaneous requests per domain
# contrib.middleware.retry.RetryMiddleware default settings
RETRY_TIMES = 2 # initial response + 2 retries = 3 requests
RETRY_HTTP_CODES = ['500', '503', '504', '400', '408', '200']
SCHEDULER = 'scrapy.core.scheduler.Scheduler'
SCHEDULER_ORDER = 'BFO' # available orders: BFO (default), DFO
SPIDER_MODULES = []
SPIDERPROFILER_ENABLED = False
SPIDER_MIDDLEWARES = [
# Engine side
'scrapy.contrib.itemsampler.ItemSamplerMiddleware',
'scrapy.contrib.spidermiddleware.limit.RequestLimitMiddleware',
'scrapy.contrib.spidermiddleware.restrict.RestrictMiddleware',
'scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware',
'scrapy.contrib.spidermiddleware.referer.RefererMiddleware',
'scrapy.contrib.spidermiddleware.urllength.UrlLengthMiddleware',
'scrapy.contrib.spidermiddleware.depth.DepthMiddleware',
# Spider side
]
STATS_ENABLED = True
STATS_CLEANUP = False
STATS_DEBUG = False
# deprecated settings - the stats web service should be moved to the web console
STATS_WSPORT = 8089
STATS_WSTIMEOUT = 15
TEMPLATES_DIR = abspath(join(dirname(__file__), '..', 'templates'))
URLLENGTH_LIMIT = 2083
USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)
TELNETCONSOLE_ENABLED = 1
#TELNETCONSOLE_PORT = 2020 # if not set uses a dynamic port
WEBCONSOLE_ENABLED = True
WEBCONSOLE_PORT = None
WEBCONSOLE_LOGFILE = None
# this setting is used by the cluster master to pass additional settings to
# workers at connection time
GLOBAL_CLUSTER_SETTINGS = []

View File

@ -11,7 +11,8 @@ once the spider has finished crawling all regular (non failed) pages. Once
there is no more failed pages to retry this middleware sends a signal
(retry_complete), so other extensions could connect to that signal.
Default values are located in scrapy.conf.core_settings
Default values are located in scrapy.conf.default_settings, like any other
setting
About HTTP errors to consider: