Skip to main content

InMemoryAutoRefresh

InMemoryAutoRefresh is an in-memory implementation of the AutoRefresh interface. It is a thread-safe general purpose auto-refresh cache that watches for updates asynchronously for the keys after they are added to the cache. An item can be inserted only once.

Methods


Start()

@classmethod
def Start(
ctx: context.Context
) - > error

Initiates the asynchronous processing and synchronization loops for the cache. This method must be called to begin the auto-refresh functionality.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for managing cancellation and timeouts of the background operations.

Returns

TypeDescription
errorAn error if the startup process fails.

enqueueLoop()

@classmethod
def enqueueLoop(
ctx: context.Context
)

Runs a continuous loop to process items from the workqueue. This method is responsible for dequeuing items and initiating their processing.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for managing cancellation and timeouts of the enqueue loop.

Update()

@classmethod
def Update(
id: ItemID,
item: [Item](item.md?sid=flytestdlib_cache_item)
) - > bool

Updates an existing item in the cache with a new value. If the item does not exist, it will not be added.

Parameters

NameTypeDescription
idItemIDThe unique identifier of the item to update.
item[Item](item.md?sid=flytestdlib_cache_item)The new item value to associate with the given ID.

Returns

TypeDescription
boolA boolean indicating whether the update was successful (true) or if the item was not found (false).

Delete()

@classmethod
def Delete(
key: interface{}
)

Removes an item from the cache immediately. This operation bypasses the delayed deletion mechanism.

Parameters

NameTypeDescription
keyinterface{}The key of the item to be deleted from the cache.

Get()

@classmethod
def Get(
id: ItemID
) - > ([Item](item.md?sid=flytestdlib_cache_item), error)

Retrieves an item from the cache using its unique identifier. This method provides immediate access to cached items.

Parameters

NameTypeDescription
idItemIDThe unique identifier of the item to retrieve.

Returns

TypeDescription
([Item](item.md?sid=flytestdlib_cache_item), error)The requested item and an error if the item is not found or an issue occurs during retrieval.

GetOrCreate()

@classmethod
def GetOrCreate(
id: ItemID,
item: [Item](item.md?sid=flytestdlib_cache_item)
) - > ([Item](item.md?sid=flytestdlib_cache_item), error)

Retrieves an item from the cache if it exists, otherwise it creates and stores the provided item. This ensures an item is always present after this call.

Parameters

NameTypeDescription
idItemIDThe unique identifier of the item to retrieve or create.
item[Item](item.md?sid=flytestdlib_cache_item)The item to create if no existing item is found for the given ID.

Returns

TypeDescription
([Item](item.md?sid=flytestdlib_cache_item), error)The existing or newly created item and an error if creation fails.

DeleteDelayed()

@classmethod
def DeleteDelayed(
id: ItemID
) - > error

Marks an item for delayed deletion from the cache. The actual removal will occur during a subsequent synchronization cycle.

Parameters

NameTypeDescription
idItemIDThe unique identifier of the item to be marked for delayed deletion.

Returns

TypeDescription
errorAn error if the item cannot be marked for delayed deletion.

enqueueBatches()

@classmethod
def enqueueBatches(
ctx: context.Context
) - > error

Enqueues batches of items for processing. This method is typically called internally to add items to the workqueue for asynchronous handling.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for managing cancellation and timeouts during batch enqueuing.

Returns

TypeDescription
errorAn error if there is an issue enqueuing the batches.

sync()

@classmethod
def sync(
ctx: context.Context
) - > error

Performs a synchronization operation, refreshing the cache with the latest data and processing any pending deletions. This method ensures cache consistency.

Parameters

NameTypeDescription
ctxcontext.ContextThe context for managing cancellation and timeouts of the synchronization operation.

Returns

TypeDescription
errorAn error if the synchronization process encounters an issue.

inProcessing()

@classmethod
def inProcessing(
key: interface{}
) - > bool

Checks if a given key is currently being processed by the cache's background workers. This prevents duplicate processing of the same item.

Parameters

NameTypeDescription
keyinterface{}The key of the item to check for its processing status.

Returns

TypeDescription
boolA boolean indicating whether the item associated with the key is currently in the processing queue (true) or not (false).