From 9b95075abf014a07ebb57b4685740ad5bba8b679 Mon Sep 17 00:00:00 2001 From: Artem Tsyrulnikov Date: Tue, 6 Jan 2026 18:56:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B0=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=B5=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B8=D0=B7=20s3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/usecase/creative/delete_creative.py | 15 ++++++++++----- src/usecase/creative/update_creative.py | 18 +++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/usecase/creative/delete_creative.py b/src/usecase/creative/delete_creative.py index 934552b..a73df67 100644 --- a/src/usecase/creative/delete_creative.py +++ b/src/usecase/creative/delete_creative.py @@ -1,3 +1,4 @@ +import asyncio import logging from typing import TYPE_CHECKING @@ -28,10 +29,14 @@ async def delete_creative(self: 'Usecase', input: dto.DeleteCreativeInput) -> No media_key = creative.media_s3_key if media_key: - try: - await self.s3.delete(media_key) - log.info('Deleted creative media from S3: %s', media_key) - except Exception as e: - log.warning('Failed to delete creative media from S3: %s', e) + + async def delete_old_media() -> None: + try: + await self.s3.delete(media_key) + log.info('Deleted old creative media from S3: %s', media_key) + except Exception as e: + log.warning('Failed to delete old creative media from S3: %s', e) + + asyncio.create_task(delete_old_media()) await self.database.delete_creative(input.creative_id) diff --git a/src/usecase/creative/update_creative.py b/src/usecase/creative/update_creative.py index 09eb44c..6cf5127 100644 --- a/src/usecase/creative/update_creative.py +++ b/src/usecase/creative/update_creative.py @@ -1,3 +1,4 @@ +import asyncio import logging import uuid from typing import TYPE_CHECKING @@ -33,14 +34,18 @@ async def update_creative( if input.media_data is not None: domain.validate_media_size(input.media_data) - # Удаляем старое медиа из S3 + # Удаляем старое медиа из S3 в фоне old_media_key = creative.media_s3_key if old_media_key: - try: - await self.s3.delete(old_media_key) - log.info('Deleted old creative media from S3: %s', old_media_key) - except Exception as e: - log.warning('Failed to delete old creative media from S3: %s', e) + + async def delete_old_media() -> None: + try: + await self.s3.delete(old_media_key) + log.info('Deleted old creative media from S3: %s', old_media_key) + except Exception as e: + log.warning('Failed to delete old creative media from S3: %s', e) + + asyncio.create_task(delete_old_media()) # Загружаем новое медиа в S3 new_media_data = input.media_data @@ -82,7 +87,6 @@ async def update_creative( def _get_content_type(media_type: str | None) -> str: - """Map Telegram media type to MIME content type.""" if not media_type: return 'application/octet-stream'