Merge pull request #8 from sanderfoobar/session-uri-docs

Change README to support new config option `SESSION_URI`
This commit is contained in:
Sander
2022-03-10 14:55:03 +02:00
committed by GitHub
2 changed files with 28 additions and 14 deletions
+26 -13
View File
@@ -16,7 +16,7 @@ $ pipenv install quart-session
$ pip install quart-session $ pip install quart-session
``` ```
and requires Python 3.7.0 or higher. A fairly minimal Quart-Session example is, and requires Python 3.7.0 or higher. A minimal Quart-Session example is:
```python3 ```python3
from quart import Quart, session from quart import Quart, session
@@ -24,13 +24,16 @@ from quart_session import Session
app = Quart(__name__) app = Quart(__name__)
app.config['SESSION_TYPE'] = 'redis' app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_URI'] = 'redis://:password@localhost:6379'
Session(app) Session(app)
@app.route('/') @app.route('/')
async def hello(): async def hello():
session["foo"] = "bar" session["foo"] = "bar"
return 'hello' return "session key 'foo' set"
@app.route('/foo')
async def foo():
return session.get("foo", "session key 'foo' not found")
app.run() app.run()
``` ```
@@ -38,9 +41,9 @@ app.run()
## Features ## Features
### Redis support ### Redis
via `aioredis`. via `aioredis>=2.0.0`.
```python3 ```python3
app = Quart(__name__) app = Quart(__name__)
@@ -48,8 +51,16 @@ app.config['SESSION_TYPE'] = 'redis'
Session(app) Session(app)
``` ```
If you already have a `aioredis.Client` instance and you'd like to share By default, Quart-session connects to Redis at `127.0.0.1:6379`. If you
it with the session interface, have a different location, use `SESSION_URI`
```python3
app = Quart(__name__)
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_URI'] = 'redis://:password@localhost:6379'
```
Alternatively, for extra control, you may provide your own `aioredis.Client` instance altogether.
```python3 ```python3
app = Quart(__name__) app = Quart(__name__)
@@ -57,15 +68,17 @@ app.config['SESSION_TYPE'] = 'redis'
@app.before_serving @app.before_serving
async def setup(): async def setup():
cache = await aioredis.create_redis_pool(...) cache = await aioredis.Redis(
host="foobar.com",
port=6379,
password="foobar"
)
app.config['SESSION_REDIS'] = cache app.config['SESSION_REDIS'] = cache
Session(app) Session(app)
``` ```
By default, Quart-session creates a single connection to Redis, while #### Trio
the example above sets up a connection pool.
#### Trio support
Quart-Session comes with [an (experimental) Redis client](quart_session/redis_trio) for use with the [Trio](https://trio.readthedocs.io/en/stable/) eventloop. Quart-Session comes with [an (experimental) Redis client](quart_session/redis_trio) for use with the [Trio](https://trio.readthedocs.io/en/stable/) eventloop.
@@ -78,7 +91,7 @@ app.config['SESSION_TYPE'] = 'redis'
Session(app) Session(app)
``` ```
### Memcached support ### Memcached
via `aiomcache`. via `aiomcache`.
+2 -1
View File
@@ -224,7 +224,8 @@ class RedisSessionInterface(SessionInterface):
.. note:: .. note::
Creates a single Redis connection, you might prefer Creates a single Redis connection, you might prefer
pooling instead (see ``aioredis.Redis.create_redis_pool``) pooling instead (see the `aioredis` documentation
for connection pool examples).
""" """
if self.backend is None: if self.backend is None:
import aioredis import aioredis