From 726b9253d79108eb0fdc7d0b579747db15aa3b89 Mon Sep 17 00:00:00 2001 From: Devguru Date: Fri, 27 Feb 2026 21:28:55 +0530 Subject: [PATCH] fix: Clean up temporary PDF file after FileResponse using BackgroundTask --- apps/backend/app/routers/reports.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/backend/app/routers/reports.py b/apps/backend/app/routers/reports.py index 5b80ab8e..80f3f954 100644 --- a/apps/backend/app/routers/reports.py +++ b/apps/backend/app/routers/reports.py @@ -9,6 +9,7 @@ from pyaslreport import generate_report, get_bids_metadata from pyaslreport.enums import ModalityTypeValues from fastapi.responses import FileResponse +from starlette.background import BackgroundTask from weasyprint import HTML from app.utils.report_template import render_report_html from app.utils.lib import default_serializer, save_upload, remove_dir @@ -129,5 +130,10 @@ async def download_pdf(report_data: dict): with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmp: HTML(string=html_content).write_pdf(tmp.name) tmp_path = tmp.name - return FileResponse(tmp_path, media_type="application/pdf", filename="report.pdf") + return FileResponse( + tmp_path, + media_type="application/pdf", + filename="report.pdf", + background=BackgroundTask(os.unlink, tmp_path) + )