aiohttp_session
Библиотека предоставляет возможность использовать сессии в aiohttp.web.
Использование
Библиотека позволяет хранить пользовательские данные в объекте сессии. Объект сессии имеет интерфейс подобный словарю (dict-подобный). Перед использованием сессий в веб-обработчике Вы должны зарегистрировать промежуточный слой сессий в Вашем приложении [1].Простой пример ииспользования:
import asyncio
import time
from aiohttp import web
from aiohttp_session import get_session, setup
from aiohttp_session.cookie_storage import EncryptedCookieStorage
@asyncio.coroutine
def handler(request):
session = yield from get_session(request)
session['last_visit'] = time.time()
return web.Response(body=b'OK')
@asyncio.coroutine
def init(loop):
app = web.Application()
setup(app,
EncryptedCookieStorage(b'Ключ длиною в 32 байта')) # 1
app.router.add_route('GET', '/', handler)
srv = yield from loop.create_server(
app.make_handler(), '0.0.0.0', 8080)
return srv
loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
try:
loop.run_forever()
except KeyboardInterrupt:
pass
Для хранения данных хранилища используют HTTP куки с именем AIOHTTP _COOKIE _SESSION.Доступные хранилища сессии:
- SimpleCookieStorage - хранит данные сессии в качестве простой строки JSON в теле куки. Используйте его только в целях тестирования, так как это очень небезопасно.
- EncryptedCookieStore — хранит данные сессии в куки также как и SimpleCookieStorage, но данные кодируются криптографическим шифром Fernet. Для генерации ключа используйте метод cryptography.fernet.Fernet.generate_key().
Требуется библиотека:
$ pip install aiohttp_session[secure]
- RedisStorage - сохраняет JSON-данных в Redis. В куки хранится только ключ (случайный UUID).
Требуется библиотека:
$ pip install aiohttp_session[aioredis]
Установка
pip3 install aiohttp_session
Код библиотеки
Проект размещен на GitHub. Пожалуйста, если Вы нашли баг или у Вас есть предложения, не стесняйтесь писать в багтрекер. Библиотека использует Travis для непрерывной интеграции.Зависимости
- Python 3.3 и asyncio или Python 3.4+
- cryptography с EncryptedCookieStorage
- aioredis с RedisStorage.
Комментариев нет:
Отправить комментарий