All File Converter xizmati zamonaviy Python 3.12 asinxron steki bazasida masshtablanadigan taqsimlangan SaaS-tizim sifatida loyihalashtirilgan. Arxitektura mustaqil qatlamlarga bo'lingan: tarmoq signallarini qabul qilish, vazifalarni boshqarish, og'ir ikkilik jarayonlarni izolyatsiya qilingan holda bajarish va tahliliy kontur.
1. Umumiy texnologiyalar steki va tizim arxitekturasi
Platforma asosiga yuqori unumdorlik (high-throughput), xotirani minimal darajada iste'mol qilish va nosozliklardan himoya qilish prinsiplari qo'yilgan:
- Telegram Bot Framework: Maxfiy toʻkenlarni validatsiya qilish va xabarlarning hayotiy sikli maxsus filtrlari bilan Webhook rejimida ishlaydigan
Aiogram 3.13. - Veb-shlyuz va REST API: Ikkinchi darajali ikkilik fayllarni asinxron tarzda oqimli uzatish (
FileResponse) vaBackgroundTasksorqali fonda tozalash imkoniyatiga ega Uvicorn ASGI-serveri bazasidagiFastAPI. - Navbatlar brokeri va kesh:
Redis 7(Celery vazifalarini boshqarish, poyga holatidan blokirovkalar, brutfortdan himoya qilish, sessiyalarni keshga olish). - Fon ijrochisi (Task Queue):
converter_workerizolyatsiya qilingan konteynerida ajratilgan ishchilar (vorkerlar) hovuzi bilanCelery 5.4. - Ma'lumotlar bazasi:
SQLAlchemy 2.0 (asyncpg)ORM qatlami, doimiy ulanishlar hovuzi (20+10 overflow) va xato tranzaksiyalarni avtomatik takrorlash (@db_retry) xususiyatiga egaPostgreSQL 16. - Tarmoq konturi: Middleware orqali serverga to'g'ridan-to'g'ri IP orqali kirishni bloklagan holda
Cloudflare Zero Trustorqali tunnel qilish.
2. Asinxron navbatlar va og'ir hisob-kitoblarni izolyatsiya qilish (Celery + Redis)
Mediafayllar va ofis paketlarini konvertatsiya qilish CPU va RAMga yuqori yuklamalarni keltirib chiqaradi. Telegram'ga kelib tushadigan xabarlarni qayta ishlash jarayoni og'ir operatsiyalar vaqtida qotib qolmasligi uchun qat'iy izolyatsiya amalga oshirilgan:
- Vazifalarni Redis'ga delegatsiya qilish: Format tanlanganda Telegram-dastur vazifani MB'da
PROCESSING(Qayta ishlanmoqda) degan status bilan ro'yxatdan o'tkazadi va Celery orqalitasks.execute_conversionnavbatiga qo'yadi. - Vorkerning izolyatsiya qilingan konteyneri: Konvertatsiya utilitalarini bajarish o'z protsessor vaqti va xotira limiti bo'lgan alohida Linux konteynerida amalga oshiriladi.
- Qotib qolishni nazorat qilish va taym-autlar: Tashqi utilitalar chaqiruvi qat'iy vaqt nazorati bilan asinxron kontekstga o'ralgan (
conversion_timeout_sec = 180). Limit oshib ketganda, jarayonproc.kill()orqali majburiy yakunlanadi va resurslar bo'shatiladi. - Nosozlikka chidamli Fallback: Redis brokeri vaqtincha ishlamay qolganda, vazifa mahalliy asinxron dispetcher tomonidan avtomatik ravishda ushlab olinadi va foydalanuvchi uchun xatolarsiz to'g'ridan-to'g'ri bajariladi.
3. Ixtisoslashtirilgan konvertatsiya dvigatellari konveyeri
Har bir ma'lumot turi uchun tor ixtisoslashtirilgan nativ utilitalar va kutubxonalar ishga tushiriladi:
- Hujjatlar va jadvallar (LibreOffice): DOCX, XLSX, PPTX, RTF, ODT formatlarini PDF yoki matnli fayllarga aniq render qilish uchun boshsiz (headless) ofis paketi (
soffice --headless). - Oqimli audiolar va videolar (FFmpeg): Videokodeklarni (H.264), audiokodeklarni (MP3, OGG Opus) ko'p oqimli qayta kodlash, ovozli yo'lakchalarni ajratib olish, GIF generatsiya qilish (Lanczos-filtr) va Telegram videoxabarlarini kvadrat shaklga keltirish (1:1).
- Yuqori tezlikdagi PDF ishlovi (Poppler Utils):
pdftotext(formatlangan matnni UTF-8 formatida lahzada ajratib olish) vapdftoppm(LibreOffice xarajatlarisiz PDF'ni sahirama-sahifa rastrli tasvirlarga render qilish) utilitalari. - Optik belgilarni tanib olish (Tesseract OCR): Skanerlar va suratlardagi bosma matnni 40+ tilda neyrotarmoq yordamida ajratib olish.
- Rastrli va vektorli grafika:
Pillowkutubxonalari (HEIC va AVIF formatlarini qo'llab-quvvatlash bilan birga), vektor tasvirlar uchunCairoSVGva Telegram animatsiyali stikerlari (.TGS) uchunlottie. - Kitoblar, subtitrlar va shriftlar:
Calibredvigateli (ebook-convert),pysubs2subtitralar parseri (SRT, VTT, ASS, SSA) vafonttoolsshriftlar kompilyatori (WOFF2 formatidagi Brotli-kompressiya).
4. Resurslarni oldini olish himoyasi (System Guard)
Xotira yetishmovchiligi (OOM Killer) sababli server qulab tushishidan himoya qilish uchun System Guard oldini olish diagnostika xizmati joriy etilgan. Faylni qayta ishlashga qabul qilishdan oldin tizim xostning asosiy metrikalarini tekshiradi:
- Bo'sh tezkor xotira (RAM): Minimal 500 MB bo'sh hajm (
guard_min_free_ram_mb). - Diskdagi joy:
/tmpdirektoriyasida minimal 2 GB bo'sh joy (guard_min_free_disk_mb). - Vazifalar navbati: Celery navbati uzunligini cheklash (20 tadan ko'p bo'lmagan kutilayotgan vazifalar).
Limitlar oshib ketganda, xizmat vaqtincha himoyani yoqadi (HTTP 503 / chatdagi xabar), bu esa serverning haddan tashqari yuklanishining oldini oladi va Telegram'dagi administratorlarga zudlik bilan ogohlantirish yuboradi.
5. Fayllarning hayotiy sikli va xavfsizlik (GDPR)
Arxitektura Zero-Data-Footprint modeli bo'yicha loyihalashtirilgan:
- Foydalanuvchi fayllari vazifa identifikatorlari asosidagi noyob prefikslar bilan
tmp/conversions/himoyalangan hajmiga yuklanadi. - Fayllar faqat ishchi sessiya doirasida — 15 daqiqadan ko'p bo'lmagan vaqt (900 soniya) davomida mavjud bo'lib qoladi.
- Avtomatik axlat yig'uvchi (Garbage Collector) chatga muvaffaqiyatli yuborilganligi tasdiqlangandan so'ng yoki sessiya taym-auti tugagandan so'ng darhol asl va tayyor fayllarni o'chirib tashlaydi.
- PostgreSQL ma'lumotlar bazasi ikkilik fayllarni yoki hujjatlarning shaxsiy matnlarini saqlamaydi — jadvallarda faqat anonimlashtirilgan texnik metama'lumotlar (formatlar, baytlardagi o'lchamlar, ishlash vaqti, statuslar) qayd etiladi.
6. Tashqi veb-xizmatlar uchun universal REST API
Xizmat dastlab ko'p platformali backend sifatida loyihalashtirilgan. Bot bilan bir qatorda veb-saytlar (masalan, Django asosida) va uchinchi tomon botlari uchun to'laqonli himoyalangan dasturiy interfeys ishlaydi:
GET /api/v1/formats— Google Jadvallar sozlamalari bilan sinxronlashtirilgan mavjud konvertatsiya yo'nalishlarining dinamik JSON-martitsasi.POST /api/v1/convert—multipart/form-data(fayl, maqsadli format, tashqi mijoz ID'si) ni qabul qiluvchi va tayyor baytlar oqimini to'g'ridan-to'g'ri yuklab olish ko'rinishida beruvchi universal so'nggi nuqta (endpoint).secrets.compare_digestorqali vaqt bo'yicha hujumlardan himoyalangan Bearer to'kenlar (WEBHOOK_REFRESH_TOKEN) bo'yicha avtorizatsiya.
7. Boshqaruv paneli va Observability (NiceGUI + AG Grid)
Biznes ko'rsatkichlari va tizim holatini monitoring qilish NiceGUI 2.x bazasidagi nativ Single-Page boshqaruv paneliga olib chiqilgan:
- Maxsus Excel uslubidagi chekboks-filtrlariga (
aggrid_filters.js) ega interaktivAG Grid (v32+)jadvallari. - Navbatlar, API provayderlari kechikishlari va PostgreSQL / Redis pingini real vaqt rejimida monitoring qilish.
- Imzolangan JWT to'kenlar orqali
MetabaseBI-dashbordi bilan uzluksiz integratsiyalangan holda sanalar bo'yicha yaxlit filtrlash.