Tornado: الدليل الشامل لإطار عمل الويب غير المتزامن في Python
ما هو Tornado
Tornado هو خادم ويب غير متزامن قوي وإطار عمل لتطوير الويب بلغة Python، صُمم خصيصًا للتعامل مع عدد كبير من الاتصالات المتزامنة. تم تطويره بواسطة فريق FriendFeed (الذي استحوذت عليه Facebook لاحقًا)، وأصبح Tornado أحد الرواد في مجال البرمجة غير المتزامنة في Python.
الفلسفة الأساسية لـ Tornado هي استخدام الإدخال/الإخراج غير المحظور (non-blocking I/O) والهندسة المعمارية القائمة على الأحداث. وهذا يسمح لعملية واحدة بخدمة آلاف الاتصالات في وقت واحد، مما يجعله الخيار الأمثل لبناء تطبيقات ويب عالية التحميل، وغرف الدردشة، وأنظمة الوقت الفعلي، وخدمات API.
الميزات والفوائد الرئيسية لـ Tornado
الهندسة غير المتزامنة
يستخدم Tornado نموذج البرمجة القائم على الأحداث، والذي يسمح بمعالجة العديد من الطلبات في خيط واحد. وهذا يقلل بشكل كبير من التكاليف الإضافية لتبديل السياق وإدارة الذاكرة.
خادم HTTP مدمج
على عكس العديد من أطر العمل الأخرى، يتضمن Tornado خادم HTTP خاصًا به، مما يلغي الحاجة إلى مكونات إضافية مثل WSGI لنشر التطبيقات.
دعم WebSocket
يوفر Tornado دعمًا أصليًا لاتصالات WebSocket، مما يجعله خيارًا ممتازًا لبناء تطبيقات تفاعلية في الوقت الفعلي.
التوافق مع asyncio
بدءًا من الإصدار 5.0، أصبح Tornado متوافقًا تمامًا مع asyncio، مما يتيح استخدامه مع مكتبات Python غير المتزامنة الأخرى.
نظام توجيه مرن
يوفر Tornado نظام توجيه URLs قويًا مع دعم التعبيرات العادية والبارامترات.
محرك قوالب مدمج
يتضمن الإطار محرك قوالب خاصًا به لإنشاء صفحات HTML بمحتوى ديناميكي.
التثبيت وإعداد البيئة
تثبيت Tornado
pip install tornado
للعمل مع الميزات الإضافية، يمكن تثبيت حزم إضافية:
# للعمل مع MongoDB
pip install motor
# للعمل مع PostgreSQL
pip install asyncpg
# للعمل مع Redis
pip install aioredis
هيكل المشروع
هيكل المشروع الموصى به لـ Tornado:
project/
├── app.py # ملف التطبيق الرئيسي
├── handlers/ # معالجات الطلبات
│ ├── __init__.py
│ ├── base.py
│ ├── auth.py
│ └── api.py
├── models/ # نماذج البيانات
│ ├── __init__.py
│ └── user.py
├── templates/ # قوالب HTML
│ ├── base.html
│ ├── index.html
│ └── error.html
├── static/ # الملفات الثابتة
│ ├── css/
│ ├── js/
│ └── images/
├── config/ # ملفات الإعدادات
│ ├── __init__.py
│ └── settings.py
└── requirements.txt # تبعيات المشروع
إنشاء أول تطبيق
مثال أساسي
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("مرحبًا بك في Tornado!")
class AboutHandler(tornado.web.RequestHandler):
def get(self):
self.write("صفحة عنا")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
(r"/about", AboutHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
print("الخادم يعمل على http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
إعداد التطبيق مع البارامترات
import tornado.web
import tornado.ioloop
import os
class Application(tornado.web.Application):
def __init__(self):
handlers أيضاً في المكتبة
التحقق من صحة البيانات في TypeScript: المكتبات، الأساليب وأمثلة الكود
قوائم المهام في Go: نظرة عامة على المكتبات والأدوات
إرسال البريد الإلكتروني باستخدام JavaScript (Node.js): nodemailer, sendgrid, mailgun
Swashbuckle لـ C# (.NET): دليل شامل مع أمثلة
التفويض والمصادقة في Kotlin: Ktor وJWT وSpring Security