diff --git a/requirements.txt b/requirements.txt index 02ea76cb..a5cbd757 100644 --- a/requirements.txt +++ b/requirements.txt @@ -27,3 +27,5 @@ mnemonic==0.20 qrcode==7.4.2 blinker==1.7.0 flask===3.0.0 +objgraph==3.6.0 +pympler==1.0.1 diff --git a/ytdlbot/ytdl_bot.py b/ytdlbot/ytdl_bot.py index 103ee4f8..6d0491c4 100644 --- a/ytdlbot/ytdl_bot.py +++ b/ytdlbot/ytdl_bot.py @@ -19,10 +19,12 @@ from io import BytesIO from typing import Any +import objgraph import pyrogram.errors import qrcode import yt_dlp from apscheduler.schedulers.background import BackgroundScheduler +from pympler import tracker from pyrogram import Client, enums, filters, types from pyrogram.errors.exceptions.bad_request_400 import UserNotParticipant from pyrogram.raw import functions @@ -569,8 +571,17 @@ def trx_notify(_, **kwargs): app.send_message(user_id, text) +def track_memory(): + print("\n\nobjgraph result:") + objgraph.show_growth() + objgraph.show_most_common_types() + print("\n\npympler result:") + tr.print_diff() + + if __name__ == "__main__": MySQL() + tr = tracker.SummaryTracker() TRX_SIGNAL.connect(trx_notify) scheduler = BackgroundScheduler(timezone="Europe/London", job_defaults={"max_instances": 6}) scheduler.add_job(auto_restart, "interval", seconds=600) @@ -579,6 +590,7 @@ def trx_notify(_, **kwargs): scheduler.add_job(Redis().reset_today, "cron", hour=0, minute=0) scheduler.add_job(InfluxDB().collect_data, "interval", seconds=120) scheduler.add_job(TronTrx().check_payment, "interval", seconds=60, max_instances=1) + scheduler.add_job(track_memory, "interval", seconds=120, max_instances=1) # default quota allocation of 10,000 units per day scheduler.add_job(periodic_sub_check, "interval", seconds=3600) scheduler.start()