Skip to main content

sanic-redis

Tests PyPI version Python versions

Async Redis support for Sanic.

Built on top of Async version of Redis library.

HiRedis is available as an optional parser for higher throughput.

Installation

You can install this package as usual with pip:

pip install sanic-redis

Install the optional hiredis parser for higher throughput:

pip install "sanic-redis[hiredis]"

Requires Python 3.10+, Sanic 25.3+, and redis-py 7 or 8.

Config

Redis URLs are passed to redis.asyncio.from_url. See the redis-py URL documentation for supported schemes and query options:

https://redis.readthedocs.io/en/stable/connections.html#redis.asyncio.client.Redis.from_url

Basic setup:

app.config.REDIS = "redis://localhost:6379/0"
redis = SanicRedis()
redis.init_app(app)

Use ctx_name when the Sanic config key and runtime context name should differ:

app.config.REDIS_CACHE = "redis://localhost:6379/1"
redis = SanicRedis(config_name="REDIS_CACHE", ctx_name="cache")
redis.init_app(app)

Pass redis-py client options with from_url_kwargs:

redis = SanicRedis(from_url_kwargs={"decode_responses": True})
redis.init_app(app)

Use single_connection_client and auto_close_connection_pool as SanicRedis parameters, not inside from_url_kwargs or Redis URL query options.

Enable startup validation when the app should fail fast on Redis connection errors:

redis = SanicRedis(ping_on_startup=True)
redis.init_app(app)

Example

from sanic import Sanic
from sanic.response import text
from sanic_redis import SanicRedis

app = Sanic(__name__)

app.config.update(
    {
        'REDIS': "redis://localhost:6379/0",
        'REDIS1': "redis://localhost:6379/1",
        'REDIS2': "redis://localhost:6379/2",
    }
)

redis = SanicRedis() # default config_name is "REDIS"
redis.init_app(app)

redis1 = SanicRedis(config_name="REDIS1", ctx_name="redis1")
redis1.init_app(app)

redis2 = SanicRedis(config_name="REDIS2", ctx_name="redis2")
redis2.init_app(app)


@app.route('/test1')
async def test1(request):
    r = request.app.ctx.redis1
    await r.set("key1", "value1")
    result = await r.get("key1")
    return text(str(result))


@app.route('/test2')
async def test2(request):
    r = request.app.ctx.redis
    await r.set('key2', 'value2')
    result = await r.get('key2')
    return text(str(result))


@app.route('/test3')
async def test3(request):
    r = request.app.ctx.redis2
    await r.set('key3', 'value3')
    result = await r.get('key3')
    return text(str(result))


if __name__ == '__main__':
    app.run(debug=True)

Use request.app.ctx.<name> as the runtime connection source. SanicRedis.conn and SanicRedis.app were removed in 0.7.

Testing

pip install -e ".[test]"
docker compose -f docker-compose.test.yml up -d
tox -e py313-deps-latest
docker compose -f docker-compose.test.yml down

Run the quick compatibility smoke test with:

tox -e py313-deps-latest -- -m compat

Resources

Metadata

Release files for sanic-redis 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sanic-redis 0.7.0
File Size Uploaded
sanic_redis-0.7.0.tar.gz 13.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sanic-redis 0.7.0
File Interpreter ABI Platform
sanic_redis-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.2 kB

Release files / sanic_redis-0.7.0.tar.gz

Download URL sanic_redis-0.7.0.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
727c112f82968cb88d4a6e9290773725782f11349de8edd19e33221bcdef76c5
BLAKE2b-256 checksum
How to use checksums
494fe80556ae07a27f1465018b978d9b23e90e9f744b6be924180ac9be61da52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.

Transparency log

Release files / sanic_redis-0.7.0-py3-none-any.whl

Download URL sanic_redis-0.7.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dfab2f9317766be14350e06204e86fb73bd9daac290402701ef2d65136f0a553
BLAKE2b-256 checksum
How to use checksums
9544fdb2e8e102fea6da9096742194fc596fb821d4c3d28e9e65606802c48dfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page