parent
4d3a32ede7
commit
3f676108d9
@ -0,0 +1,90 @@
|
||||
import six
|
||||
|
||||
from scrapy.utils.misc import load_object
|
||||
|
||||
from . import defaults
|
||||
|
||||
|
||||
# Shortcut maps 'setting name' -> 'parmater name'.
|
||||
SETTINGS_PARAMS_MAP = {
|
||||
'REDIS_URL': 'url',
|
||||
'REDIS_HOST': 'host',
|
||||
'REDIS_PORT': 'port',
|
||||
'REDIS_ENCODING': 'encoding',
|
||||
}
|
||||
|
||||
|
||||
def get_redis_from_settings(settings):
|
||||
"""Returns a redis client instance from given Scrapy settings object.
|
||||
|
||||
This function uses ``get_client`` to instantiate the client and uses
|
||||
``defaults.REDIS_PARAMS`` global as defaults values for the parameters. You
|
||||
can override them using the ``REDIS_PARAMS`` setting.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
settings : Settings
|
||||
A scrapy settings object. See the supported settings below.
|
||||
|
||||
Returns
|
||||
-------
|
||||
server
|
||||
Redis client instance.
|
||||
|
||||
Other Parameters
|
||||
----------------
|
||||
REDIS_URL : str, optional
|
||||
Server connection URL.
|
||||
REDIS_HOST : str, optional
|
||||
Server host.
|
||||
REDIS_PORT : str, optional
|
||||
Server port.
|
||||
REDIS_ENCODING : str, optional
|
||||
Data encoding.
|
||||
REDIS_PARAMS : dict, optional
|
||||
Additional client parameters.
|
||||
|
||||
"""
|
||||
params = defaults.REDIS_PARAMS.copy()
|
||||
params.update(settings.getdict('REDIS_PARAMS'))
|
||||
# XXX: Deprecate REDIS_* settings.
|
||||
for source, dest in SETTINGS_PARAMS_MAP.items():
|
||||
val = settings.get(source)
|
||||
if val:
|
||||
params[dest] = val
|
||||
|
||||
# Allow ``redis_cls`` to be a path to a class.
|
||||
if isinstance(params.get('redis_cls'), six.string_types):
|
||||
params['redis_cls'] = load_object(params['redis_cls'])
|
||||
|
||||
return get_redis(**params)
|
||||
|
||||
|
||||
# Backwards compatible alias.
|
||||
from_settings = get_redis_from_settings
|
||||
|
||||
|
||||
def get_redis(**kwargs):
|
||||
"""Returns a redis client instance.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
redis_cls : class, optional
|
||||
Defaults to ``redis.StrictRedis``.
|
||||
url : str, optional
|
||||
If given, ``redis_cls.from_url`` is used to instantiate the class.
|
||||
**kwargs
|
||||
Extra parameters to be passed to the ``redis_cls`` class.
|
||||
|
||||
Returns
|
||||
-------
|
||||
server
|
||||
Redis client instance.
|
||||
|
||||
"""
|
||||
redis_cls = kwargs.pop('redis_cls', defaults.REDIS_CLS)
|
||||
url = kwargs.pop('url', None)
|
||||
if url:
|
||||
return redis_cls.from_url(url, **kwargs)
|
||||
else:
|
||||
return redis_cls(**kwargs)
|
Loading…
Reference in new issue