scrapy_redis.connection — Scrapy-Redis 0.9.0 documentation

# Source code for scrapy_redis.connection

    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_DB": "db",
        "REDIS_ENCODING": "encoding",
    }

    SETTINGS_PARAMS_MAP["REDIS_DECODE_RESPONSES"] = "decode_responses"

    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_DB : int, optional
            Server database
        REDIS_ENCODING : str, optional
            Data encoding.
        REDIS_PARAMS : dict, optional
            Additional client parameters.

        Python 3 Only
        ----------------
        REDIS_DECODE_RESPONSES : bool, optional
            Sets the `decode_responses` kwarg in Redis cls ctor

        """
        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"), str):
            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)