diff --git a/cista/app.py b/cista/app.py index e646fe4..7a1fffa 100644 --- a/cista/app.py +++ b/cista/app.py @@ -2,6 +2,7 @@ import asyncio import datetime import mimetypes import threading +import tracemalloc from concurrent.futures import ThreadPoolExecutor from pathlib import Path, PurePath, PurePosixPath from stat import S_IFDIR, S_IFREG @@ -9,6 +10,7 @@ from urllib.parse import unquote from wsgiref.handlers import format_date_time import brotli +import objgraph import sanic.helpers from blake3 import blake3 from sanic import Blueprint, Sanic, empty, raw, redirect @@ -32,6 +34,7 @@ app.exception(Exception)(handle_sanic_exception) @app.before_server_start async def main_start(app, loop): + tracemalloc.start() config.load_config() app.ctx.threadexec = ThreadPoolExecutor( max_workers=8, thread_name_prefix="cista-ioworker" @@ -39,6 +42,17 @@ async def main_start(app, loop): await watching.start(app, loop) +@app.add_task +async def mem_task(): + while True: + await asyncio.sleep(10) + snapshot = tracemalloc.take_snapshot() + top_stats = snapshot.statistics("lineno") + for stat in top_stats[:10]: + print(stat) + objgraph.show_growth(limit=10) + + @app.after_server_stop async def main_stop(app, loop): quit.set()