Cache
Cache
¶
Bases: Struct
Cache class for handling file-based caching with support for asynchronous data loading.
Attributes:
Name | Type | Description |
---|---|---|
cache_path |
str
|
The path where the cache file is stored. |
method |
Optional[Callable]
|
A callable, typically an async method, to fetch data when the cache doesn't exist or needs to be reloaded. |
date_as_suffix |
bool
|
If True, appends today's date to the cache file name as a suffix. |
Methods:
Name | Description |
---|---|
get_async |
Asynchronously retrieves data from the cache. If the cache file doesn't exist, it will fetch data using the provided method and store it in the cache. |
clean_cache |
Deletes the cache file from disk. |
Usage:
async def my_function():
await asyncio.sleep(5)
return []
cache = Cache(
cache_path=f"./cache/markets_{ex.exchange_name}.json", method=ex.get_contracts
)
data = await cache.get_async()
# Use this if you don't have any other async.io task, otherwise the program will end before `my_function` runs
await cache.wait_till_complete()
dump_format
¶
Format of the file to dump to. It might be None if your method already dumps the file.
clean_cache
¶
get_async
¶
Gets the data from the cache. If it doesn't exist, it will reload it.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
reload |
bool
|
Whether to reload the data. Defaults to True. |
True
|
**method_kwargs |
Keyword arguments to pass to the method. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
dict |
The data from the cache. |
Source code in src/tradingtoolbox/utils/cache.py
wait_till_all_tasks_complete
¶
Waits for all tasks to complete. Use this if you don't have any other async.io task to avoid the program ending before the method is ran
Source code in src/tradingtoolbox/utils/cache.py
wait_till_complete
¶
Waits for the task to complete. Use this if you don't have any other async.io task to avoid the program ending before the method is ran