file#

class litestar.stores.file.FileStore#

Bases: NamespacedStore

File based, thread and process safe, asynchronous key/value store.

Note

To ensure arbitrary keys can safely be stored on any file system without potentially causing issues due to path separators or collisions, they are hashed with BLAKE2 before being interpreted as a file path. This means that the cache key becomes opaque inside the store, and a key does not translate to a file with that name on the file system.

__init__(path: PathLike[str], *, create_directories: bool = False) None#

Initialize FileStorage.

Parameters:
  • path – Path to store data under

  • create_directories

    Create the directories in path if they don’t exist Default: False

    Added in version 2.9.0.

path#

file path

create_directories#

flag to create directories in path

with_namespace(namespace: str) FileStore#

Return a new instance of FileStore, using a sub-path of the current store’s path.

async set(key: str, value: str | bytes, expires_in: int | timedelta | None = None) None#

Set a value.

Parameters:
  • key – Key to associate the value with

  • value – Value to store

  • expires_in – Time in seconds before the key is considered expired

Returns:

None

async get(key: str, renew_for: int | timedelta | None = None) bytes | None#

Get a value.

Parameters:
  • key – Key associated with the value

  • renew_for – If given and the value had an initial expiry time set, renew the expiry time for renew_for seconds. If the value has not been set with an expiry time this is a no-op

Returns:

The value associated with key if it exists and is not expired, else None

async delete(key: str) None#

Delete a value.

If no such key exists, this is a no-op.

Parameters:

key – Key of the value to delete

async delete_all() None#

Delete all stored values.

Note

This deletes and recreates FileStore.path

async delete_expired() None#

Delete expired items.

Since expired items are normally only cleared on access (i.e. when calling get()), this method should be called in regular intervals to free disk space.

async exists(key: str) bool#

Check if a given key exists.

async expires_in(key: str) int | None#

Get the time in seconds key expires in. If no such key exists or no expiry time was set, return None.