асинхронное удаление из s3

This commit is contained in:
Artem Tsyrulnikov
2026-01-06 18:56:00 +03:00
parent c73798da87
commit 9b95075abf
2 changed files with 21 additions and 12 deletions

View File

@@ -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:
async def delete_old_media() -> None:
try:
await self.s3.delete(media_key)
log.info('Deleted creative media from S3: %s', media_key)
log.info('Deleted old creative media from S3: %s', media_key)
except Exception as e:
log.warning('Failed to delete creative media from S3: %s', 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)

View File

@@ -1,3 +1,4 @@
import asyncio
import logging
import uuid
from typing import TYPE_CHECKING
@@ -33,15 +34,19 @@ 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:
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
if new_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'