سروس All File Converter کو جدید Python 3.12 ایسکرونس اسٹیک پر مبنی ایک قابلِ توسیع تقسیم شدہ SaaS سسٹم کے طور پر ڈیزائن کیا گیا ہے۔ معمارੀ کو آزاد تہوں میں تقسیم کیا گیا ہے: نیٹ ورک ایونٹس کی وصولی، ٹاسک آرکیسٹریشن، بھاری بائنری پراسیسز کی آئسولیٹڈ ایگزیکیوشن اور اینالیٹیکل لوپ۔
1. مجموعی ٹیکنالوجی اسٹیک اور سسٹمز آرکیٹیکچر
پلیٹ فارم کی بنیاد ہائی تھروپٹ، کم از کم میموری کے استعمال اور خرابیوں سے بچاؤ کے اصولوں پر رکھی گئی ہے:
- Telegram Bot Framework:
Aiogram 3.13، جو سیک্রেট ٹوکنز کی توثیق اور کسٹم میسج لائف سائیکل فلٹرز کے ساتھ Webhook موڈ میں کام کرتا ہے۔ - ویب گیٹ وے اور REST API: Uvicorn ASGI سرور پر مبنی
FastAPIجو بائنری فائلوں کی ایسکرونس اسٹریمنگ (FileResponse) اورBackgroundTasksکے ذریعے پس منظر میں صفائی کی سہولت فراہم کرتا ہے۔ - کیو بروکر اور کیش:
Redis 7(Celery ٹاسک مینجمنٹ، ریس کنڈیشنز سے بچاؤ، برٹ فورس سے تحفظ، سیشن کیشنگ)۔ - پس منظر کا کارندہ (Task Queue):
Celery 5.4جو کہ ایک الگ تھلگ کنٹینرconverter_workerمیں ورکرز کے مخصوص پول کے ساتھ کام کرتا ہے۔ - ڈیٹا بیس:
PostgreSQL 16مع ORM لیئرSQLAlchemy 2.0 (asyncpg)، مستقل کنکشنز کا پول (20+10 overflow) اور ناکام ٹرانزیکشنز کی آٹو ریٹرائی (@db_retry)۔ - نیٹ ورک لوپ: Middleware کے ذریعے سرور تک براہ راست IP رسائی کو مسدود کرتے ہوئے
Cloudflare Zero Trustکے ذریعے ٹنلنگ۔
2. ایسکرونس کیوز اور ہیوی کمپیوٹations کی آئسولیشن (Celery + Redis)
میڈیا فائلوں اور آفس سوٹس کی کنورژن سے CPU اور RAM پر شدید دباؤ پڑتا ہے۔ اس بات کو یقینی بنانے کے لیے کہ ہیوی آپریشنز کے دوران ٹیلیگرام میں آنے والے پیغامات کی پروسیسنگ کا عمل بلاک نہ ہو، سخت آئسولیشن نافذ کی گئی ہے:
- Redis میں ٹاسکس کی تفویض: فارمیٹ کے انتخاب پر، ٹیلیگرام ہینڈلر ڈیٹا بیس میں
PROCESSINGاسٹیٹس کے ساتھ ٹاسک رجسٹر کرتا ہے اور Celery کے ذریعےtasks.execute_conversionکیو میں ٹاسک ڈالتا ہے۔ - ورکر کا آئسولیٹڈ کنٹینر: کنورژن یوٹیلیٹیز کا نفاذ ایک علیحدہ Linux کنٹینر میں ہوتا ہے جس کی اپنی پروسیسر ٹائم اور میموری کی حد ہوتی ہے۔
- ہینگ کنٹرول اور ٹائم آؤٹس: بیرونی یوٹیلیٹیز کی کالز کو سخت ٹائم کنٹرول کے ساتھ ایسکرونس کنٹیکسٹ میں لپیٹ دیا گیا ہے (
conversion_timeout_sec = 180)۔ حد سے تجاوز کرنے پر، عمل کو زبردستیproc.kill()کے ذریعے ختم کر دیا جاتا ہے تاکہ وسائل آزاد ہو جائیں۔ - فالٹ ٹالرینٹ فال بیک: Redis بروکر کے عارضی طور پر دستیاب نہ ہونے کی صورت میں، ٹاسک خود بخود مقامی ایسکرونس ڈسپیچر کے ذریعے لے لیا جاتا ہے اور صارف کے لیے کسی خرابی کے بغیر براہ راست انجام پاتا ہے۔
3. خصوصی کنورژن انجنوں کا پائپ لائن
ہر ڈیٹا کی قسم کے لیے انتہائی مخصوص نیٹو یوٹیلیٹیز اور لائبریریز استعمال کی جاتی ہیں:
- دستاویزات اور شیٹس (LibreOffice): DOCX، XLSX، PPTX، RTF، ODT کو PDF یا ٹیکسٹ فائلوں میں درست طریقے سے رینڈر کرنے کے لیے ہیڈلیس آفس سوٹ (
soffice --headless)۔ - اسٹریمنگ آڈیو اور ویڈیو (FFmpeg): ویڈیو کوڈیکس (H.264)، آڈیو کوڈیکس (MP3, OGG Opus) کی ملٹی تھریڈڈ ٹرانسکوڈنگ، آڈیو ٹریکس کا اخراج، GIF جنریشن (Lanczos فلٹر) اور ٹیلیگرام ویڈیو پیغامات کی مربع تراش خراش (1:1)۔
- ہائی اسپیڈ PDF پروسیسنگ (Poppler Utils):
pdftotext(UTF-8 میں فارمیٹ شدہ متن کا فوری اخراج) اورpdftoppm(LibreOffice کے اضافی اخراجات کے بغیر PDF کو راسٹر امیجز میں صفحہ بہ صفحہ رینڈر کرنا)۔ - آپٹیکل ریکگنیشن (Tesseract OCR): 40+ زبانوں میں اسکینز اور تصاویر سے پرنٹ شدہ متن کا نیورل نیٹ ورک کے ذریعے اخراج۔
- راسٹر اور ویکٹر گرافکس:
Pillowلائبریریز (بشمول HEIC اور AVIF فارمیٹس کے لیے سپورٹ)، ویکٹر امیجز کے لیےCairoSVGاور ٹیلیگرام اینیمیٹڈ اسٹیکرز (.TGS) کے لیےlottie۔ - کتابیں، سب ٹائٹلز اور فونٹس:
Calibreانجن (ebook-convert)، سب ٹائٹل پارسرpysubs2(SRT, VTT, ASS, SSA) اور فونٹ کمپائلرfonttools(WOFF2 میں Brotli کمپریشن)۔
4. حفاظتی تدابیر اور وسائل کا تحفظ (System Guard)
میموری کی کمی (OOM Killer) کی وجہ سے سرور کے کریش ہونے سے بچنے کے لیے پیشگی تشخیصی سروس System Guard نافذ کی گئی ہے۔ پروسیسنگ کے لیے فائل قبول کرنے سے پہلے، سسٹم ہوسٹ کے اہم میٹرکس کی جانچ کرتا ہے:
- خالی ریم (RAM): کم از کم 500 MB خالی جگہ (
guard_min_free_ram_mb)۔ - ڈسک کی جگہ:
/tmpڈائریکٹری میں کم از کم 2 GB خالی جگہ (guard_min_free_disk_mb)۔ - ٹاسک کیو: Celery کیو کی لمبائی پر پابندی (20 سے زیادہ منتظر ٹاسکس نہیں)۔
حدود سے تجاوز کرنے پر، سروس عارضی طور پر تحفظ کو فعال کر دیتی ہے (HTTP 503 / چیٹ میں پیغام)، جس سے سرور کے اوورلوڈ ہونے سے بچاؤ ہوتا ہے اور ٹیلیگرام میں منتظمین کو فوری الرٹ چلا جاتا ہے۔
5. فائلوں کا لائف سائیکل اور سیکیورٹی (GDPR)
معمارੀ کو زیرو ڈیٹا فٹ پرنٹ ماڈل کے تحت ڈیزائن کیا گیا ہے:
- صارفین کی فائلیں ٹاسک شناخت کنندگان پر مبنی منفرد پریفکسز کے ساتھ محفوظ والیوم
tmp/conversions/میں اپ لوڈ کی جاتی ہیں۔ - فائلیں سختی سے ورکنگ سیشن کے دوران ہی دستیاب رہتی ہیں — 15 منٹ سے زیادہ نہیں (900 سیکنڈ)۔
- آٹو میٹک گاربیج کلیکٹر چیٹ میں کامیابی سے بھیجے جانے کی تصدیق کے فوراً بعد یا سیشن کا ٹائم آؤٹ ختم ہونے پر اصل اور تیار شدہ فائلوں کو مٹا دیتا ہے۔
- PostgreSQL ڈیٹا بیس بائنری فائلیں یا دستاویزات کا ذاتی متن ذخیرہ نہیں کرتا — ٹیبلز میں صرف گمنام تکنیکی میٹا ڈیٹا (فارمیٹس، بائٹس میں سائز، کام کا وقت، اسٹیٹس) درج کیے جاتے ہیں۔
6. بیرونی ویب سروسز کے لیے یونیورسل REST API
سروس کو شروع سے ہی ملٹی پلیٹ فارم بیک اینڈ کے طور پر ڈیزائن کیا گیا ہے۔ بوٹ کے ساتھ ساتھ، ویب سائٹس (مثلاً Django پر) اور تیسرے فریق کے بوٹس کے لیے ایک مکمل محفوظ پروگرامنگ انٹرفیس بھی کام کرتا ہے:
GET /api/v1/formats— دستیاب کنورژن ڈائریکشنز کی متحرک JSON میٹرکس، جو Google Sheets کی ترتیبات کے ساتھ ہم آہنگ ہے۔POST /api/v1/convert— ایک یونیورسل اینڈ پوائنٹ جوmultipart/form-data(فائل، ٹارگٹ فارمیٹ، بیرونی کلائنٹ کی آئی ڈی) قبول کرتا ہے اور براہ راست ڈاؤن لوڈ کی شکل میں بائٹس کا تیار شدہ اسٹریم دیتا ہے۔secrets.compare_digestکے ذریعے ٹائم اٹیک سے تحفظ کے ساتھ Bearer ٹوکنز (WEBHOOK_REFRESH_TOKEN) کے ذریعے توثیق۔
7. کنٹرول پینل اور Observability (NiceGUI + AG Grid)
کاروباری اشاریوں اور سسٹم کی حالت کی نگرانی کو NiceGUI 2.x پر مبنی نیٹو سنگل پیج کنٹرول پینل میں منتقل کر دیا گیا ہے:
- کسٹم ایکسل اسٹائل چیک باکس فلٹرز (
aggrid_filters.js) کے ساتھ انٹرایکٹو ٹیبلزAG Grid (v32+)۔ - کیوز، API فراہم کنندگان کی تاخیر اور PostgreSQL / Redis کے پنگ کی ریئل ٹائم مانیٹرنگ۔
- دستخط شدہ JWT ٹوکنز کے ذریعے
MetabaseBI ڈیش بورڈ کے ساتھ ہموار انٹیگریشن کے ساتھ تاریخوں کے لحاظ سے جامع فلٹرنگ۔