Spaces:
Running
Running
""" | |
Add the event loop to the cache key, to prevent event loop closed errors. | |
""" | |
import asyncio | |
from .in_memory_cache import InMemoryCache | |
class LLMClientCache(InMemoryCache): | |
def update_cache_key_with_event_loop(self, key): | |
""" | |
Add the event loop to the cache key, to prevent event loop closed errors. | |
If none, use the key as is. | |
""" | |
try: | |
event_loop = asyncio.get_event_loop() | |
stringified_event_loop = str(id(event_loop)) | |
return f"{key}-{stringified_event_loop}" | |
except Exception: # handle no current event loop | |
return key | |
def set_cache(self, key, value, **kwargs): | |
key = self.update_cache_key_with_event_loop(key) | |
return super().set_cache(key, value, **kwargs) | |
async def async_set_cache(self, key, value, **kwargs): | |
key = self.update_cache_key_with_event_loop(key) | |
return await super().async_set_cache(key, value, **kwargs) | |
def get_cache(self, key, **kwargs): | |
key = self.update_cache_key_with_event_loop(key) | |
return super().get_cache(key, **kwargs) | |
async def async_get_cache(self, key, **kwargs): | |
key = self.update_cache_key_with_event_loop(key) | |
return await super().async_get_cache(key, **kwargs) | |