CosmosDBCache

class CosmosDBCache(AbstractCache)

Synchronous implementation of AbstractCache using Azure Cosmos DB NoSQL API.

This class provides a concrete implementation of the AbstractCache interface using Azure Cosmos DB for caching data, with synchronous operations.

Attributes:

  • seed Union[str, int] - A seed or namespace used as a partition key.
  • client CosmosClient - The Cosmos DB client used for caching.
  • container - The container instance used for caching.

__init__

def __init__(seed: Union[str, int], cosmosdb_config: CosmosDBConfig)

Initialize the CosmosDBCache instance.

Arguments:

  • seed Union[str, int] - A seed or namespace for the cache, used as a partition key.
  • connection_string str - The connection string for the Cosmos DB account.
  • container_id str - The container ID to be used for caching.
  • client Optional[CosmosClient] - An existing CosmosClient instance to be used for caching.

create_cache

@classmethod
def create_cache(cls, seed: Union[str, int], cosmosdb_config: CosmosDBConfig)

Factory method to create a CosmosDBCache instance based on the provided configuration. This method decides whether to use an existing CosmosClient or create a new one.

get

def get(key: str, default: Optional[Any] = None) -> Optional[Any]

Retrieve an item from the Cosmos DB cache.

Arguments:

  • key str - The key identifying the item in the cache.
  • default optional - The default value to return if the key is not found.

Returns:

The deserialized value associated with the key if found, else the default value.

set

def set(key: str, value: Any) -> None

Set an item in the Cosmos DB cache.

Arguments:

  • key str - The key under which the item is to be stored.
  • value - The value to be stored in the cache.

Notes:

The value is serialized using pickle before being stored.

close

def close() -> None

Close the Cosmos DB client.

Perform any necessary cleanup, such as closing network connections.

__enter__

def __enter__()

Context management entry.

Returns:

  • self - The instance itself.

__exit__

def __exit__(exc_type: Optional[type], exc_value: Optional[Exception],
             traceback: Optional[Any]) -> None

Context management exit.

Perform cleanup actions such as closing the Cosmos DB client.