Вопрос проверяет умение проектировать распределённую систему для модерации контента с использованием микросервисов, очередей и ML.
Система должна обрабатывать большие объёмы изображений асинхронно, чтобы не блокировать пользователей. Основной подход — использование очередей сообщений и микросервисов.
from fastapi import FastAPI, UploadFile
import aio_pika
app = FastAPI()
@app.post("/upload")
async def upload_image(file: UploadFile):
# Сохраняем файл в S3
image_id = save_to_s3(file)
# Отправляем задачу в очередь
connection = await aio_pika.connect_robust("amqp://guest:guest@rabbitmq/")
async with connection:
channel = await connection.channel()
await channel.default_exchange.publish(
aio_pika.Message(body=image_id.encode()),
routing_key="moderation_queue"
)
return {"task_id": image_id}Такая архитектура масштабируется горизонтально, устойчива к пиковым нагрузкам и позволяет легко добавлять новые ML-модели. Применяется в соцсетях, облачных хранилищах и платформах UGC.