Walter Oggioni woggioni
  • Joined on 2024-03-17

kaya-session-memcache (0.0.1)

Published 2026-07-26 06:12:46 +02:00 by woggioni in woggioni/kaya

Installation

pip install --index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple/ --extra-index-url https://pypi.org/simple kaya-session-memcache

About this package

Memcached-backed session storage for the Kaya lightweight ASGI web framework

kaya-session-memcache

Memcached-backed session storage for the Kaya web framework.

Provides MemcacheSessionStore, a SessionStore implementation (from kaya-session) that persists session data in memcached via aiomcache, so sessions are shared across processes and hosts.

Usage

import aiomcache

from kaya.core import KayaApp, HttpContext
from kaya.session import SessionMixin
from kaya.session.memcache import MemcacheSessionStore

client = aiomcache.Client('127.0.0.1', 11211)
session = SessionMixin(MemcacheSessionStore(client))
app = KayaApp(mixins=[session])

@app.GET('/')
async def home(ctx: HttpContext):
    n = ctx.session.get('visits', 0) + 1
    ctx.session['visits'] = n
    await ctx.send_str(200, f'visits: {n}')

Sessions are stored under keys with the prefix kaya:session: (configurable via the prefix argument). Server-side expiry uses memcached item expiration and slides on each access when the session mixin passes a max_age. TTLs larger than 30 days are automatically converted to absolute Unix timestamps, as required by the memcached protocol.

Serialization

Session data is serialized with pickle by default, so arbitrary Python objects can be stored. A different serializer can be plugged in via the dumps/loads arguments:

import json

store = MemcacheSessionStore(
    client,
    dumps=lambda d: json.dumps(d).encode('utf-8'),
    loads=lambda b: json.loads(b.decode('utf-8')),
)

Warning: pickle deserialization of untrusted data is unsafe. Only use the default serializer with a trusted memcached server.

Requirements

Requires Python: >=3.10
Details
PyPI
2026-07-26 06:12:46 +02:00
2
9.7 KiB
Assets (2)
Versions (1) View all
0.0.1 2026-07-26