From 4b25d1735e37c9c92fb9d22e2c2315ad0fb2998e Mon Sep 17 00:00:00 2001 From: ZhymabekRoman Date: Fri, 5 Apr 2024 22:13:54 +0500 Subject: [PATCH] Improve user expirience --- core/medium_parser/core.py | 23 +++++++++++------------ server/handlers/main.py | 2 +- server/handlers/post.py | 2 +- server/utils/maintenance_scheduler.py | 2 +- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/core/medium_parser/core.py b/core/medium_parser/core.py index 3212437..b736420 100644 --- a/core/medium_parser/core.py +++ b/core/medium_parser/core.py @@ -84,20 +84,19 @@ class MediumParser: logger.exception(ex) return None - async def query_get(self, use_cache: bool): + async def query_get(self, use_cache: bool, force_cache: bool = False): cache_used = True post_data = await self.get_post_data_from_cache() if use_cache else None - if not post_data: - cache_used = False + if not post_data and not force_cache: logger.debug("Getting value from cache failed, using API") - + cache_used = False post_data = await self.get_post_data_from_api() return post_data, cache_used - async def query(self, use_cache: bool = True, retry: int = 3): - logger.debug(f"Medium QUERY: {use_cache=}, {retry=}") + async def query(self, use_cache: bool = True, retry: int = 3, force_cache: bool = False): + logger.debug(f"Medium QUERY: {use_cache=}, {retry=}, {force_cache=}") post_data, is_cache_used = None, False @@ -105,7 +104,7 @@ class MediumParser: reason = None while not post_data and attempt < retry: try: - post_data, is_cache_used = await self.query_get(use_cache) + post_data, is_cache_used = await self.query_get(use_cache, force_cache) if not post_data: reason = "No post data returned" @@ -194,10 +193,10 @@ class MediumParser: current_pos += 1 continue - if paragraph["text"] is None: - text_formater = None - else: + if paragraph["text"] is not None: text_formater = parse_paragraph_text(paragraph["text"], paragraph["markups"]) + else: + text_formater = None for highlight in highlights: for highlight_paragraph in highlight["paragraphs"]: @@ -343,10 +342,10 @@ class MediumParser: break _tmp_current_pos += 1 - + code_block_template_rendered = await code_block_template.render_async(text="\n".join(code_list), code_css_class=" ".join(code_css_class)) pre_template_rendered = await pre_template.render_async(code_block=code_block_template_rendered) - + out_paragraphs.append(pre_template_rendered) current_pos = _tmp_current_pos - 1 elif paragraph["type"] == "BQ": diff --git a/server/handlers/main.py b/server/handlers/main.py index 69739fc..65298b4 100644 --- a/server/handlers/main.py +++ b/server/handlers/main.py @@ -27,7 +27,7 @@ async def route_processing(path: str, request: Request): if key_data != config.ADMIN_SECRET_KEY: return JSONResponse({"message": f"Wrong secret key: {key_data}"}, status_code=403) - + path = path.removeprefix("render-no-cache/") if path.startswith("/no-redis/"): path = path.removeprefix("/no-redis/") diff --git a/server/handlers/post.py b/server/handlers/post.py index f639998..7f9f57e 100644 --- a/server/handlers/post.py +++ b/server/handlers/post.py @@ -29,7 +29,7 @@ async def render_postleter(limit: int = 30, as_html: bool = False): for post_id in random_post_id_list: try: post = MediumParser(post_id, timeout=config.TIMEOUT, host_address=config.HOST_ADDRESS, auth_cookies=config.MEDIUM_AUTH_COOKIES) - await post.query() + await post.query(force_cache=True, retry=1) post_metadata = await post.generate_metadata(as_dict=True) outlet_posts_list.append(post_metadata) except Exception as ex: diff --git a/server/utils/maintenance_scheduler.py b/server/utils/maintenance_scheduler.py index b7c127e..d8d5de9 100644 --- a/server/utils/maintenance_scheduler.py +++ b/server/utils/maintenance_scheduler.py @@ -28,7 +28,7 @@ def enable_maintenance_mode(): send_message("Maintenance mode disabled") -def do_maintenance(sleep_time: int = 60 * 60): +def do_maintenance(sleep_time: int = 60 * 60 * 24): while True: try: enable_maintenance_mode()