From d8983ce6420c71961ef1ff38360ab17b201550bc Mon Sep 17 00:00:00 2001 From: ZhymabekRoman Date: Sat, 22 Jun 2024 12:41:32 +0500 Subject: [PATCH] jinja: fixing async bug --- core/medium_parser/core.py | 42 +++++++++++++++++++------------------- requirements.txt | 3 +-- server/__init__.py | 5 ----- server/handlers/main.py | 4 ++-- server/handlers/post.py | 4 ++-- server/services/jinja.py | 4 ++-- server/utils/error.py | 4 ++-- 7 files changed, 30 insertions(+), 36 deletions(-) diff --git a/core/medium_parser/core.py b/core/medium_parser/core.py index 9a49d48..c92afb4 100644 --- a/core/medium_parser/core.py +++ b/core/medium_parser/core.py @@ -252,21 +252,21 @@ class MediumParser: if out_paragraphs: css_class.append("pt-12") header_template = jinja_env.from_string('

{{ text }}

') - header_template_rendered = await header_template.render_async(text=text_formater.get_text(), css_class="".join(css_class)) + header_template_rendered = header_template.render(text=text_formater.get_text(), css_class="".join(css_class)) out_paragraphs.append(header_template_rendered) elif paragraph["type"] == "H3": css_class = [] if out_paragraphs: css_class.append("pt-12") header_template = jinja_env.from_string('

{{ text }}

') - header_template_rendered = await header_template.render_async(text=text_formater.get_text(), css_class="".join(css_class)) + header_template_rendered = header_template.render(text=text_formater.get_text(), css_class="".join(css_class)) out_paragraphs.append(header_template_rendered) elif paragraph["type"] == "H4": css_class = [] if out_paragraphs: css_class.append("pt-8") header_template = jinja_env.from_string('

{{ text }}

') - header_template_rendered = await header_template.render_async(text=text_formater.get_text(), css_class="".join(css_class)) + header_template_rendered = header_template.render(text=text_formater.get_text(), css_class="".join(css_class)) out_paragraphs.append(header_template_rendered) elif paragraph["type"] == "IMG": image_template = jinja_env.from_string( @@ -276,20 +276,20 @@ class MediumParser: if paragraph["layout"] == "OUTSET_ROW": image_templates_row = [] img_row_template = jinja_env.from_string('
{{ images }}
') - image_template_rendered = await image_template.render_async(paragraph=paragraph) + image_template_rendered = image_template.render(paragraph=paragraph) image_templates_row.append(image_template_rendered) _tmp_current_pos = current_pos + 1 while len(paragraphs) > _tmp_current_pos: _paragraph = paragraphs[_tmp_current_pos] if _paragraph["layout"] == "OUTSET_ROW_CONTINUE": - image_template_rendered = await image_template.render_async(paragraph=_paragraph) + image_template_rendered = image_template.render(paragraph=_paragraph) image_templates_row.append(image_template_rendered) else: break _tmp_current_pos += 1 - img_row_template_rendered = await img_row_template.render_async(images="".join(image_templates_row)) + img_row_template_rendered = img_row_template.render(images="".join(image_templates_row)) out_paragraphs.append(img_row_template_rendered) current_pos = _tmp_current_pos - 1 @@ -298,10 +298,10 @@ class MediumParser: current_pos += 1 continue else: - image_template_rendered = await image_template.render_async(paragraph=paragraph) + image_template_rendered = image_template.render(paragraph=paragraph) out_paragraphs.append(image_template_rendered) if paragraph["text"]: - out_paragraphs.append(await image_caption_template.render_async(text=text_formater.get_text())) + out_paragraphs.append(image_caption_template.render(text=text_formater.get_text())) elif paragraph["type"] == "P": css_class = ["leading-8"] paragraph_template = jinja_env.from_string('

{{ text }}

') @@ -309,7 +309,7 @@ class MediumParser: css_class.append("mt-3") else: css_class.append("mt-7") - paragraph_template_rendered = await paragraph_template.render_async(text=text_formater.get_text(), css_class=" ".join(css_class)) + paragraph_template_rendered = paragraph_template.render(text=text_formater.get_text(), css_class=" ".join(css_class)) out_paragraphs.append(paragraph_template_rendered) elif paragraph["type"] == "ULI": uli_template = jinja_env.from_string('') @@ -321,14 +321,14 @@ class MediumParser: _paragraph = paragraphs[_tmp_current_pos] if _paragraph["type"] == "ULI": text_formater = parse_paragraph_text(_paragraph["text"], _paragraph["markups"]) - li_template_rendered = await li_template.render_async(text=text_formater.get_text()) + li_template_rendered = li_template.render(text=text_formater.get_text()) li_templates.append(li_template_rendered) else: break _tmp_current_pos += 1 - uli_template_rendered = await uli_template.render_async(li="".join(li_templates)) + uli_template_rendered = uli_template.render(li="".join(li_templates)) out_paragraphs.append(uli_template_rendered) current_pos = _tmp_current_pos - 1 @@ -342,14 +342,14 @@ class MediumParser: _paragraph = paragraphs[_tmp_current_pos] if _paragraph["type"] == "OLI": text_formater = parse_paragraph_text(_paragraph["text"], _paragraph["markups"]) - li_template_rendered = await li_template.render_async(text=text_formater.get_text()) + li_template_rendered = li_template.render(text=text_formater.get_text()) li_templates.append(li_template_rendered) else: break _tmp_current_pos += 1 - ol_template_rendered = await ol_template.render_async(li="".join(li_templates)) + ol_template_rendered = ol_template.render(li="".join(li_templates)) out_paragraphs.append(ol_template_rendered) current_pos = _tmp_current_pos - 1 @@ -376,8 +376,8 @@ class MediumParser: _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) + code_block_template_rendered = code_block_template.render(text="\n".join(code_list), code_css_class=" ".join(code_css_class)) + pre_template_rendered = pre_template.render(code_block=code_block_template_rendered) out_paragraphs.append(pre_template_rendered) current_pos = _tmp_current_pos - 1 @@ -385,12 +385,12 @@ class MediumParser: bq_template = jinja_env.from_string( '

{{ text }}

' ) - bq_template_rendered = await bq_template.render_async(text=text_formater.get_text()) + bq_template_rendered = bq_template.render(text=text_formater.get_text()) logger.trace(bq_template_rendered) out_paragraphs.append(bq_template_rendered) elif paragraph["type"] == "PQ": pq_template = jinja_env.from_string('

{{ text }}

') - pq_template_rendered = await pq_template.render_async(text=text_formater.get_text()) + pq_template_rendered = pq_template.render(text=text_formater.get_text()) logger.trace(pq_template_rendered) out_paragraphs.append(pq_template_rendered) elif paragraph["type"] == "MIXTAPE_EMBED": @@ -433,13 +433,13 @@ class MediumParser: logger.trace(f"{embed_site=}") - embed_template_rendered = await embed_template.render_async(paragraph=paragraph, url=url, embed_title=embed_title, embed_description=embed_description, embed_site=embed_site) + embed_template_rendered = embed_template.render(paragraph=paragraph, url=url, embed_title=embed_title, embed_description=embed_description, embed_site=embed_site) out_paragraphs.append(embed_template_rendered) elif paragraph["type"] == "IFRAME": iframe_template = jinja_env.from_string( '
' ) - iframe_template_rendered = await iframe_template.render_async(host_address=self.host_address, iframe_id=paragraph["iframe"]["mediaResource"]["id"]) + iframe_template_rendered = iframe_template.render(host_address=self.host_address, iframe_id=paragraph["iframe"]["mediaResource"]["id"]) out_paragraphs.append(iframe_template_rendered) else: @@ -508,7 +508,7 @@ class MediumParser: if collection: post_page_title_raw += " | in {{ collection.name }}" post_page_title = jinja_env.from_string(post_page_title_raw) - post_page_title_rendered = await post_page_title.render_async(title=title, creator=creator, collection=collection) + post_page_title_rendered = post_page_title.render(title=title, creator=creator, collection=collection) post_context = { "subtitle": subtitle, @@ -524,7 +524,7 @@ class MediumParser: "content": content, "tags": tags, } - post_template_rendered = await post_template.render_async(post_context) + post_template_rendered = post_template.render(post_context) return HtmlResult(post_page_title_rendered, description, url, post_template_rendered) diff --git a/requirements.txt b/requirements.txt index 40754ca..8c35fed 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,5 +9,4 @@ fastapi==0.108.0 gunicorn==21.2.0 redis[hiredis]==4.6.0 xkcdpass==1.19.3 -apscheduler==3.10.4 -nest-asyncio==1.6.0 \ No newline at end of file +apscheduler==3.10.4 \ No newline at end of file diff --git a/server/__init__.py b/server/__init__.py index b819804..98d8610 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -1,11 +1,6 @@ -import nest_asyncio - -nest_asyncio.apply() - from loguru import logger import pickledb from multiprocessing import Value -import logging from contextvars import ContextVar from typing import Optional diff --git a/server/handlers/main.py b/server/handlers/main.py index 84a3bba..9606e22 100644 --- a/server/handlers/main.py +++ b/server/handlers/main.py @@ -52,8 +52,8 @@ async def route_processing(path: str, request: Request): @trace async def main_page(): postleter_template = await render_postleter(as_html=True) - main_template_rendered = await main_template.render_async(postleter=postleter_template) - base_template_rendered = await base_template.render_async(body_template=main_template_rendered, HOST_ADDRESS=config.HOST_ADDRESS) + main_template_rendered = main_template.render(postleter=postleter_template) + base_template_rendered = base_template.render(body_template=main_template_rendered, HOST_ADDRESS=config.HOST_ADDRESS) parsed_template = parse(base_template_rendered) serialized_template = serialize(parsed_template, encoding='utf-8') return HTMLResponse(serialized_template) diff --git a/server/handlers/post.py b/server/handlers/post.py index e0e2f56..f79875e 100644 --- a/server/handlers/post.py +++ b/server/handlers/post.py @@ -41,7 +41,7 @@ async def render_postleter(limit: int = 30, as_html: bool = False): await asyncio.gather(*tasks) - postleter_template_rendered = await postleter_template.render_async(post_list=outlet_posts_list) + postleter_template_rendered = postleter_template.render(post_list=outlet_posts_list) if as_html: return postleter_template_rendered return HTMLResponse(postleter_template_rendered) @@ -97,7 +97,7 @@ async def render_medium_post_link(path: str, use_cache: bool = True, use_redis: "title": rendered_medium_post.title, "description": rendered_medium_post.description, } - rendered_post = await base_template.render_async(base_context, HOST_ADDRESS=config.HOST_ADDRESS) + rendered_post = base_template.render(base_context, HOST_ADDRESS=config.HOST_ADDRESS) parsed_rendered_post = parse(rendered_post) serialized_rendered_post = serialize(parsed_rendered_post, encoding="utf-8") diff --git a/server/services/jinja.py b/server/services/jinja.py index 74b2a77..b753938 100644 --- a/server/services/jinja.py +++ b/server/services/jinja.py @@ -1,8 +1,8 @@ from jinja2 import Environment, DebugUndefined, FileSystemLoader -jinja_env = Environment(enable_async=True) +jinja_env = Environment() jinja_safe_env = Environment(undefined=DebugUndefined) -template_env = Environment(loader=FileSystemLoader("./server/templates"), enable_async=True) +template_env = Environment(loader=FileSystemLoader("./server/templates")) template_safe_env = Environment(loader=FileSystemLoader("./server/templates"), undefined=DebugUndefined) base_template = template_env.get_template("base.html") diff --git a/server/utils/error.py b/server/utils/error.py index 6720785..529c3f3 100644 --- a/server/utils/error.py +++ b/server/utils/error.py @@ -35,11 +35,11 @@ async def generate_error(error_msg: str = None, title: str = "Error", status_cod if not quiet: send_message(f"📛 Error while processing url: {url_correlation.get()}, transponder_code: {transponder_code_correlation.get()}, error: {error_msg}") - error_template_rendered = await error_template.render_async(error_msg=error_msg, transponder_code=transponder_code_correlation.get()) + error_template_rendered = error_template.render(error_msg=error_msg, transponder_code=transponder_code_correlation.get()) base_context = { "enable_ads_header": config.ENABLE_ADS_BANNER, "body_template": error_template_rendered, "title": title, } - base_template_rendered = await base_template.render_async(base_context, HOST_ADDRESS=config.HOST_ADDRESS) + base_template_rendered = base_template.render(base_context, HOST_ADDRESS=config.HOST_ADDRESS) return HTMLResponse(base_template_rendered, status_code=status_code)