Session back‑ends
=================
MicroPie abstracts session storage behind the :class:`~micropie.SessionBackend`
interface. Different back‑ends may store session data in memory,
databases, caches or external services. A session is a dictionary of
key/value pairs associated with a ``session_id`` cookie.
SessionBackend
--------------
.. class:: SessionBackend
Abstract base class for session storage. Implementations must
provide the following asynchronous methods:
.. method:: load(session_id)
Load session data for the given *session_id*. Return a
dictionary of session data or an empty dictionary if the session
does not exist or has expired.
.. method:: save(session_id, data, timeout)
Persist the *data* dictionary for the given *session_id* with
an expiry time of *timeout* seconds.
InMemorySessionBackend
----------------------
.. class:: InMemorySessionBackend
Concrete implementation of :class:`SessionBackend` that stores
sessions in memory. This back‑end is appropriate for development
and testing but does not persist data across process restarts and
cannot be shared among worker processes.
.. method:: __init__()
Create an empty in‑memory session store.
.. method:: load(session_id)
Return the session dictionary if it exists and has not expired
according to :data:`micropie.SESSION_TIMEOUT`, otherwise return
an empty dictionary.
.. method:: save(session_id, data, timeout)
Store *data* under *session_id* and update the last access time.
SESSION_TIMEOUT
---------------
.. data:: SESSION_TIMEOUT
The default session expiration time in seconds (eight hours). You
can override this constant in your own code by assigning a new value
to ``micropie.SESSION_TIMEOUT`` or by using a custom back-end that
persists with a different timeout policy.
See also the :doc:`../howto/sessions` guide for examples of using and
implementing session back‑ends.