hack: invalidate cache on file write
This commit is contained in:
parent
5c583bd478
commit
4415c0f861
1 changed files with 5 additions and 1 deletions
|
@ -2,6 +2,7 @@ import re
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
from cache import AsyncTTL
|
from cache import AsyncTTL
|
||||||
|
from cache.key import KEY
|
||||||
from webdav3.client import Client as WebDAVclient
|
from webdav3.client import Client as WebDAVclient
|
||||||
|
|
||||||
from .settings import SETTINGS
|
from .settings import SETTINGS
|
||||||
|
@ -42,7 +43,7 @@ class WebDAV:
|
||||||
return cls._webdav_client.check(path)
|
return cls._webdav_client.check(path)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@AsyncTTL(time_to_live=SETTINGS.webdav.cache_ttl, skip_args=1)
|
@(_rb_ttl := AsyncTTL(time_to_live=SETTINGS.webdav.cache_ttl, skip_args=1))
|
||||||
async def read_bytes(cls, path: str) -> bytes:
|
async def read_bytes(cls, path: str) -> bytes:
|
||||||
"""
|
"""
|
||||||
Datei aus Pfad `path` als bytes laden
|
Datei aus Pfad `path` als bytes laden
|
||||||
|
@ -70,6 +71,9 @@ class WebDAV:
|
||||||
|
|
||||||
cls._webdav_client.resource(path).read_from(buffer)
|
cls._webdav_client.resource(path).read_from(buffer)
|
||||||
|
|
||||||
|
# Cache-Eintrag entfernen (hack: siehe AsyncTTL._TTL.__contains__)
|
||||||
|
del cls._rb_ttl.ttl[KEY((path,), {})]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def write_str(cls, path: str, content: str, encoding="utf-8") -> None:
|
async def write_str(cls, path: str, content: str, encoding="utf-8") -> None:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue