diff --git a/ytdlbot/tasks.py b/ytdlbot/tasks.py index ec3f6d6..175fca6 100644 --- a/ytdlbot/tasks.py +++ b/ytdlbot/tasks.py @@ -11,35 +11,37 @@ import logging import os import pathlib import tempfile -import time +import threading from celery import Celery +from pyrogram import idle from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup from client_init import create_app -from config import BROKER, ENABLE_CELERY +from config import BROKER, ENABLE_CELERY, WORKERS from constant import BotText from db import Redis from downloader import sizeof_fmt, upload_hook, ytdl_download -from utils import get_metadata, get_user_settings +from utils import get_metadata, get_user_settings, customize_logger, apply_log_formatter +customize_logger(["pyrogram.client", "pyrogram.session.session", "pyrogram.connection.connection"]) +apply_log_formatter() bot_text = BotText() -logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(filename)s [%(levelname)s]: %(message)s') # celery -A tasks worker --loglevel=info --pool=solo - # app = Celery('celery', broker=BROKER, accept_content=['pickle'], task_serializer='pickle') -app = Celery('celery', broker=BROKER) +app = Celery('tasks', broker=BROKER) -celery_client = create_app(app.main, 5) +celery_client = create_app(":memory:") +celery_client.start() @app.task() def download_task(chat_id, message_id, url): logging.info("celery tasks started for %s", url) - with celery_client: - bot_msg = celery_client.get_messages(chat_id, message_id) - normal_download(bot_msg, celery_client, url) + # print(celery_client.get_me()) + bot_msg = celery_client.get_messages(chat_id, message_id) + normal_download(bot_msg, celery_client, url) logging.info("celery tasks ended.") @@ -104,5 +106,12 @@ def normal_download(bot_msg, client, url): temp_dir.cleanup() +def run_celery(): + argv = ["-A", "tasks", 'worker', '--loglevel=info', "--pool=threads", f"--concurrency={WORKERS * 2}"] + app.worker_main(argv) + + if __name__ == '__main__': - download_task("", "", "") + threading.Thread(target=run_celery, daemon=True).start() + idle() + celery_client.stop() diff --git a/ytdlbot/ytdl_bot.py b/ytdlbot/ytdl_bot.py index b465c2b..60b6f94 100644 --- a/ytdlbot/ytdl_bot.py +++ b/ytdlbot/ytdl_bot.py @@ -29,7 +29,7 @@ from limit import verify_payment from tasks import download_entrance from utils import customize_logger, get_user_settings, set_user_settings -customize_logger(["pyrogram.client", "pyrogram.session.session", "pyrogram.client", "pyrogram.connection.connection"]) +customize_logger(["pyrogram.client", "pyrogram.session.session", "pyrogram.connection.connection"]) app = create_app() bot_text = BotText()