Сервис All File Converter је пројектован као скалабилни дистриuирани SaaS систем на бази савременог асинкроног стека Python 3.12. Архитектура је подељена на независне слојеве: пријем мрежних догађаја, оркестрација задатака, изоловано извршавање тешких бинарних процеса и аналитички контур.
1. Општи стек технологија и системска архитектура
У основу платформе су уграђени принципи високе перформансе (high-throughput), минималне потрошње меморије и заштите од кварова:
- Telegram Bot Framework:
Aiogram 3.13, који ради у режиму Webhook са валидацијом сигурносних токена и прилагођеним филтерима животног циклуса порука. - Веб-мрежни пролаз и REST API:
FastAPIна бази ASGI сервера Uvicorn са асинкронoм стримовањем бинарних фајлова (FileResponse) и позадинским чишћењем крозBackgroundTasks. - Брокер редова чекања и кеш:
Redis 7(управљање задацима Celery, закључавања од стања трке, заштита од брутфорса, кеширање сесија). - Позадински извршилац (Task Queue):
Celery 5.4са издвојеним базеном радника у изолованом контејнеруconverter_worker. - База података:
PostgreSQL 16са ORM слојемSQLAlchemy 2.0 (asyncpg), базеном сталних конекција (20+10 overflow) и аутоматским поновним покушајем неуспешних трансакција (@db_retry). - Мрежни контур: Тунеловање кроз
Cloudflare Zero Trustса блокаде директног IP приступа серверу преко Middleware-а.
2. Асинкрони редови чекања и изолација тешких прорачуна (Celery + Redis)
Конверзија медијских фајлова и канцеларијских пакета ствара вршна оптерећења на CPU и RAM. Да се процеси обраде долазних порука у Telegram-у не би блокирали током тешких операција, имплементирана је строга изолација:
- Делегирање задатака у Redis: При избору формата Telegram обрађивач региструје задатак у бази података са статусом
PROCESSINGи ставља задатак у ред чекањаtasks.execute_conversionпреко Celery-ја. - Изоловани контејнер радника: Извршавање алата за конверзију се дешава у посебном Linux контејнеру са сопственим лимитом процесорског времена и меморије.
- Контрола застоја и тајмаути: Позиви спољних алата су упаковани у асинкрони контекст са строгом контролом времена (
conversion_timeout_sec = 180). При прекорачењу лимита процес се принудно завршава крозproc.kill(), ослобађајући ресурсе. - Отпорни Fallback: При привременој недоступности брокера Redis, задатак аутоматски преузима локални асинкрони диспечер и извршава се директно без грешке за корисника.
3. Цевовод специјализованих мотора конверзије
За сваки тип података користе се уски специјализовани нативни алати и библиотеке:
- Документи и табеле (LibreOffice): Безглави канцеларијски пакет (
soffice --headless) за прецизно рендеровање DOCX, XLSX, PPTX, RTF, ODT у PDF формат или текстуалне фајлове. - Стримовање аудио и видео записа (FFmpeg): Вишенитично прекодирање видео кодека (H.264), аудио кодека (MP3, OGG Opus), извлачење аудио записа, генерација GIF-а (Lanczos филтер) и квадратно кропирање (1:1) Telegram видео порука.
- Високобрзинска обрада PDF-а (Poppler Utils): Алати
pdftotext(тренутно извлачење форматираног текста у UTF-8) иpdftoppm(странично рендеровање PDF-а у растерске слике без додатних трошкова LibreOffice-а). - Оптичко препознавање текста (Tesseract OCR): Неурално извлачење штампаног текста са скенова и фотографија на 40+ језика.
- Растерска и векторска графика: Библиотеке
Pillow(укључујући подршку за HEIC и AVIF формате),CairoSVGза векторске слике иlottieза анимиране Telegram стикере (.TGS). - Књиге, титлови и фонтови: Мотор
Calibre(ebook-convert), парсер титловаpysubs2(SRT, VTT, ASS, SSA) и компајлер фонтоваfonttools(Brotli компресија у WOFF2).
4. Превентивна заштита ресурса (System Guard)
За заштиту од пада сервера због недостатка меморије (OOM Killer) инсталиран је сервис превентивне дијагностике System Guard. Пре пријема фајла на обраду, систем проверава кључне метрике хоста:
- Слободна оперативна меморија (RAM): Минимум 500 МБ слободног простора (
guard_min_free_ram_mb). - Простор на диску: Минимум 2 ГБ слободног простора у директоријуму
/tmp(guard_min_free_disk_mb). - Ред чекања задатака: Ограничење дужине реда чекања Celery-ја (највише 20 задатака на чекању).
При прекорачењу лимита сервис привремено укључује заштиту (HTTP 503 / порука у чету), спречавајући преоптерећење сервера и шаљући тренутно упозорење администраторима у Telegram.
5. Животни циклус фајлова и безбедност (GDPR)
Архитектура је пројектована по моделу Zero-Data-Footprint:
- Кориснички фајлови се учитавају у заштићени волумен
tmp/conversions/са јединственим префиксима на бази идентификатора задатака. - Фајлови остају доступни строго у оквиру радне сесије — не дуже од 15 минута (900 секунди).
- Аутоматски чистач смећа брише оригиналне и готове фајлове одмах након потврде успешног слања у чет или по истеку тајмаута сесије.
- База података PostgreSQL не чува бинарне фајлове или личне текстове докумената — у табелама се фиксају само анонимизовани технички метаподаци (формати, величине у бајтовима, време рада, статуси).
6. Универзални REST API за спољне веб сервисе
Сервис је у старту пројектован као мултиплатформски бекенд. Поред бота, функционише и потпуно заштићени програмски интерфејс за веб сајтове (на пример, на Django-у) и спољне ботове:
GET /api/v1/formats— динамичка JSON матрица доступних праваца конверзије, синхронизована са подешавањима Google табела.POST /api/v1/convert— универзални ендпоинт који прихватаmultipart/form-data(фајл, циљни формат, ИД спољног клијента) и враћа готов ток бајтова у виду директног преузимања.- Ауторизација преко Bearer токена (
WEBHOOK_REFRESH_TOKEN) са заштитом од временских напада прекоsecrets.compare_digest.
7. Контролна табла и Observability (NiceGUI + AG Grid)
Мониторинг пословних показатеља и стања система је изведен у нативну Single-Page контролну таблу на бази NiceGUI 2.x:
- Интерактивне табеле
AG Grid (v32+)са прилагођеним Excel-style чекић филтерима (aggrid_filters.js). - Мониторинг редова чекања, кашњења API провајдера и пинга PostgreSQL / Redis у реалном времену.
- Пролазна филтрација по датумима са беспрекорном интеграцијом BI дашборда
Metabaseкроз потписане JWT токене.