announcements: dont cache feeds

The parsed feeds are stored in the DB, so there is no
need to cache the result when 304 is returned.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-03-24 18:16:07 -04:00
parent 561f5f4230
commit 88b0282900
No known key found for this signature in database
GPG Key ID: 7027245FBBDDF59A
1 changed files with 14 additions and 8 deletions

View File

@ -254,6 +254,7 @@ class RssFeed:
self.asset_url = f"{MOONLIGHT_URL}/assets/{self.xml_file}" self.asset_url = f"{MOONLIGHT_URL}/assets/{self.xml_file}"
self.warned: bool = False self.warned: bool = False
self.last_modified: int = 0 self.last_modified: int = 0
self.etag: Optional[str] = None
self.dev_xml_path: Optional[pathlib.Path] = None self.dev_xml_path: Optional[pathlib.Path] = None
dev_mode = config.getboolean("dev_mode", False) dev_mode = config.getboolean("dev_mode", False)
if dev_mode: if dev_mode:
@ -262,10 +263,9 @@ class RssFeed:
self.dev_xml_path = res_path.joinpath(self.xml_file) self.dev_xml_path = res_path.joinpath(self.xml_file)
async def initialize(self) -> None: async def initialize(self) -> None:
etag: Optional[str] = await self.moon_db.get( self.etag = await self.moon_db.get(
f"announcements.{self.name}.etag", None) f"announcements.{self.name}.etag", None
if etag is not None: )
self.client.register_cached_url(self.asset_url, etag)
async def update_entries(self) -> bool: async def update_entries(self) -> bool:
if self.dev_xml_path is None: if self.dev_xml_path is None:
@ -278,7 +278,11 @@ class RssFeed:
async def _fetch_moonlight(self) -> str: async def _fetch_moonlight(self) -> str:
headers = {"Accept": "application/xml"} headers = {"Accept": "application/xml"}
resp = await self.client.get(self.asset_url, headers) if self.etag is not None:
headers["If-None-Match"] = self.etag
resp = await self.client.get(
self.asset_url, headers, enable_cache=False
)
if resp.has_error(): if resp.has_error():
msg = f"Failed to update subscription '{self.name}': {resp.error}" msg = f"Failed to update subscription '{self.name}': {resp.error}"
logging.info(msg) logging.info(msg)
@ -290,9 +294,11 @@ class RssFeed:
logging.debug(f"Content at {self.xml_file} not modified") logging.debug(f"Content at {self.xml_file} not modified")
return "" return ""
# update etag # update etag
if "etag" in resp.headers: self.etag = resp.etag
etag = resp.headers["etag"] if self.etag is not None:
self.moon_db[f"announcements.{self.name}.etag"] = etag self.moon_db[f"announcements.{self.name}.etag"] = resp.etag
else:
self.moon_db.pop(f"announcements.{self.name}.etag", None)
return resp.text return resp.text
async def _fetch_local_folder(self) -> str: async def _fetch_local_folder(self) -> str: