From 583a4c4b3c1db59b2c5e06ced8bf09535360d6fd Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Fri, 21 Mar 2025 14:29:57 +0300 Subject: [PATCH] Add uvloop support for asyncio in api_server and telegram_client; update requirements.txt --- api_server.py | 19 +++++++++++++++++-- post_parser.py | 2 +- requirements.txt | 5 +++-- telegram_client.py | 5 +++++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/api_server.py b/api_server.py index 2dfbc62..d44c39a 100644 --- a/api_server.py +++ b/api_server.py @@ -1,12 +1,15 @@ import logging import os import mimetypes -import asyncio + import json from datetime import datetime import time from contextlib import asynccontextmanager import random +import asyncio +import uvloop +asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) import magic from pyrogram import errors @@ -19,6 +22,9 @@ from rss_generator import generate_channel_rss, generate_channel_html from post_parser import PostParser from url_signer import verify_media_digest + + + logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) @@ -64,8 +70,17 @@ if __name__ == "__main__": logger.info(f" {key}: {mask_sensitive_value(str(value))}") else: logger.info(f" {key}: {value}") + + # Log uvloop status + logger.info(" uvloop: enabled (asyncio speedup active)") - uvicorn.run("api_server:app", host=Config["api_host"], port=Config["api_port"], reload=True) + uvicorn.run( + "api_server:app", + host=Config["api_host"], + port=Config["api_port"], + reload=True, + loop="uvloop" + ) async def find_file_id_in_message(message, file_unique_id: str): """Find file_id by checking all possible media types in message""" diff --git a/post_parser.py b/post_parser.py index 446f59f..275d9e1 100644 --- a/post_parser.py +++ b/post_parser.py @@ -208,7 +208,7 @@ class PostParser: # Add flag "video" if the message media is VIDEO or ANIMATION and the body text is up to 100 characters. if (message.media in [MessageMediaType.VIDEO, MessageMediaType.ANIMATION] and - len(message_text.strip()) <= 100): + len(message_text.strip()) <= 200): flags.append("video") # Add flag for posts without images diff --git a/requirements.txt b/requirements.txt index 511fd3e..2b4b411 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,9 @@ fastapi==0.115.8 uvicorn==0.34.0 python-multipart==0.0.20 -Kurigram==2.1.37 -TgCrypto==1.2.5 +Kurigram +TgCrypto +uvloop pillow==11.1.0 feedgen==1.0.0 python-dateutil==2.9.0.post0 diff --git a/telegram_client.py b/telegram_client.py index 63d74aa..3aa7a0b 100644 --- a/telegram_client.py +++ b/telegram_client.py @@ -1,5 +1,10 @@ import logging import os +import asyncio +# Add uvloop for asyncio speedup +import uvloop +asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) + from pyrogram import Client from config import get_settings