Tjenesten All File Converter er designet som et skalerbart, distribueret SaaS-system baseret på den moderne asynkrone Python 3.12-stack. Arkitekturen er opdelt i uafhængige lag: modtagelse af netværkshændelser, opgaveorkestrering, isoleret udførelse af tunge binære processer og det analytiske kredsløb.
1. Generel teknologistack og systemarkitektur
Platformen er baseret på principper om høj gennemstrømning (high-throughput), minimalt hukommelsesforbrug og fejlsikring:
- Telegram Bot Framework:
Aiogram 3.13, der kører i Webhook-tilstand med validering af hemmelige tokens og tilpassede filtre for beskeders livscyklus. - Web-gateway og REST API:
FastAPIbaseret på Uvicorn ASGI-serveren med asynkroni streamet levering af binære filer (FileResponse) og baggrundsoprydning viaBackgroundTasks. - Købroker og cache:
Redis 7(håndtering af Celery-opgaver, låse mod race conditions, beskyttelse mod brute-force, sessionscaching). - Baggrundsudfører (Task Queue):
Celery 5.4med en dedikeret pool af arbejdere i en isoleretconverter_worker-container. - Database:
PostgreSQL 16med ORM-lagetSQLAlchemy 2.0 (asyncpg), en pool af vedvarende forbindelser (20+10 overflow) og automatisk genforsøg af fejlede transaktioner (@db_retry). - Netværkskredsløb: Tunnelering via
Cloudflare Zero Trustmed blokering af direkte IP-adgang til serveren via Middleware.
2. Asynkrone køer og isolation af tunge beregninger (Celery + Redis)
Konvertering af mediefiler og kontorpakker skaber spidsbelastninger på CPU og RAM. For at sikre, at behandlingen af indgående beskeder i Telegram ikke blokeres under tunge operationer, er der implementeret streng isolation:
- Delegering af opgaver til Redis: Ved valg af format registrerer Telegram-håndtereren opgaven i databasen med status
PROCESSINGog placerer opgaven i køentasks.execute_conversionvia Celery. - Isoleret arbejdercontainer: Eksekvering af konverteringsværktøjer sker i en separat Linux-container med sine egne begrænsninger for procestid og hukommelse.
- Hæng-kontrol og tidsgrænser: Kald til eksterne værktøjer er pakket ind i en asynkron kontekst med streng tidsstyring (
conversion_timeout_sec = 180). Hvis grænsen overskrides, afsluttes processen tvunget viaproc.kill(), hvorved ressourcer frigives. - Fejlsikret Fallback: Hvis Redis-brokeren midlertidigt er utilgængelig, tages opgaven automatisk op af den lokale asynkrone dispatcher og udføres direkte uden fejl for brugeren.
3. Pipeline af specialiserede konverteringsmotorer
For hver datatype anvendes højt specialiserede native værktøjer og biblioteker:
- Dokumenter og regneark (LibreOffice): Hovedløs kontorpakke (
soffice --headless) til præcis gengivelse af DOCX, XLSX, PPTX, RTF, ODT til PDF-format eller tekstfiler. - Streaming-lyd og -video (FFmpeg): Multithreaded omkodning af videokodecs (H.264), lydkodecs (MP3, OGG Opus), ekstraktion af lydspor, generering af GIF (Lanczos-filter) og kvadratisk beskæring (1:1) af Telegram-videobeskeder.
- Højhastigheds PDF-behandling (Poppler Utils): Værktøjerne
pdftotext(øjeblikkelig ekstraktion af formateret tekst i UTF-8) ogpdftoppm(side-for-side gengivelse af PDF til rasterbilleder uden LibreOffice-overhead). - Optisk tegngenkendelse (Tesseract OCR): Neural netværks-ekstraktion af trykt tekst fra scanninger og fotos på 40+ sprog.
- Raster- og vektorgrafik: Bibliotekerne
Pillow(inklusive understøttelse af HEIC- og AVIF-formater),CairoSVGtil vektor-billeder oglottietil animerede Telegram-klistermærker (.TGS). - Bøger, undertekster og skrifttyper: Motoren
Calibre(ebook-convert), undertekst-parserenpysubs2(SRT, VTT, ASS, SSA) og skrifttypekompilerenfonttools(Brotli-kompression i WOFF2).
4. Forebyggende ressourcebeskyttelse (System Guard)
For at beskytte mod servernedbrud på grund af utilstrækkelig hukommelse (OOM Killer) er tjenesten til forebyggende diagnosticering System Guard blevet introduceret. Før en fil accepteres til behandling, tjekker systemet centrale værtsspecifikke metrikker:
- Ledig RAM (RAM): Minimum 500 MB ledig kapacitet (
guard_min_free_ram_mb). - Diskplads: Minimum 2 GB ledig plads i mappen
/tmp(guard_min_free_disk_mb). - Opgavekø: Begrænsning af Celery-køens længde (ikke mere end 20 ventende opgaver).
Hvis grænserne overskrides, aktiverer tjenesten midlertidigt beskyttelse (HTTP 503 / besked i chatten), hvilket forhindrer serveroverbelastning og sender en øjeblikkelig alarm til administratorer i Telegram.
5. Filers livscyklus og sikkerhed (GDPR)
Arkitekturen er designet efter en Zero-Data-Footprint-model:
- Brugerfiler uploades til et sikkert
tmp/conversions/-volumen med unikke præfikser baseret på opgave-ID'er. - Filer forbliver tilgængelige strengt inden for arbejdssessionen — højst 15 minutter (900 sekunder).
- Den automatiske affaldsopsamler sletter kilde- og færdige filer umiddelbart efter bekræftelse af vellykket afsendelse til chatten eller når sessionens tidsgrænse udløber.
- PostgreSQL-databasen gemmer ikke binære filer eller personlige dokumenttekster — tabellerne registrerer kun anonymiserede tekniske metadata (formater, størrelser i bytes, køretid, statusser).
6. Universelt REST API til eksterne webtjenester
Tjenesten er oprindeligt designet som en multiplatform backend. Sideløbende med botten fungerer en fuldgyldig, sikker programgrænseflade til websteder (f.eks. på Django) og tredjepartsbots:
GET /api/v1/formats— en dynamisk JSON-matrix af tilgængelige konverteringsretninger, synkroniseret med Google Sheets-indstillinger.POST /api/v1/convert— et universelt endpoint, der accepterermultipart/form-data(fil, målformat, eksternt klient-ID) og returnerer en klar byte-strøm som direkte download.- Autorisation via Bearer-tokens (
WEBHOOK_REFRESH_TOKEN) med beskyttelse mod timing-angreb viasecrets.compare_digest.
7. Kontrolpanel og Observability (NiceGUI + AG Grid)
Overvågning af forretningsmæssige nøgletal og systemtilstand er blevet flyttet til et oprindeligt Single-Page kontrolpanel baseret på NiceGUI 2.x:
- Interaktive
AG Grid (v32+)-tabeller med tilpassede Excel-lignende afkrydsningsfelt-filtre (aggrid_filters.js). - Realtidsovervågning af køer, API-udbyderes forsinkelser og PostgreSQL / Redis ping.
- Gennemgående datofiltrering med sømløs integration af BI-dashboardet
Metabasevia signerede JWT-tokens.