🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • لماذا تختار FastAPI على Flask؟

لماذا تختار FastAPI على Flask؟

  • Engineering
December 03, 2021
Yunmei

لمساعدتك على البدء سريعًا في استخدام قاعدة البيانات المتجهة مفتوحة المصدر Milvus، أصدرنا مشروعًا آخر مفتوح المصدر تابعًا لنا، وهو Milvus Bootcamp على GitHub. لا يوفر معسكر تدريب Milvus Bootcamp البرامج النصية والبيانات للاختبارات المعيارية فحسب، بل يتضمن أيضًا مشاريع تستخدم Milvus لبناء بعض المنتجات القابلة للتطبيق (الحد الأدنى من المنتجات القابلة للتطبيق)، مثل نظام بحث عكسي عن الصور، أو نظام تحليل فيديو، أو روبوت محادثة لضمان الجودة، أو نظام توصية. يمكنك تعلم كيفية تطبيق البحث عن التشابه المتجه في عالم مليء بالبيانات غير المنظمة والحصول على بعض الخبرة العملية في معسكر تدريب Milvus Bootcamp.

2.png 2.png

نحن نقدم كلاً من خدمات الواجهة الأمامية والخلفية للمشاريع في مخيم ميلفوس التدريبي. ومع ذلك، فقد اتخذنا مؤخرًا قرارًا بتغيير إطار عمل الويب المعتمد من Flask إلى FastAPI.

تهدف هذه المقالة إلى شرح دوافعنا وراء هذا التغيير في إطار الويب المعتمد لميلفوس بوتكامب من خلال توضيح سبب اختيارنا ل FastAPI بدلاً من فلاسك.

أطر الويب لبايثون

يشير إطار الويب إلى مجموعة من الحزم أو الوحدات النمطية. وهو عبارة عن مجموعة من بنية برمجية لتطوير الويب تتيح لك كتابة تطبيقات أو خدمات الويب وتوفر عليك عناء التعامل مع التفاصيل منخفضة المستوى مثل البروتوكولات أو المقابس أو إدارة العمليات/المؤشرات. يمكن أن يقلل استخدام إطار عمل الويب بشكل كبير من عبء العمل في تطوير تطبيقات الويب حيث يمكنك ببساطة "توصيل" التعليمات البرمجية الخاصة بك في إطار العمل، دون الحاجة إلى مزيد من الاهتمام عند التعامل مع التخزين المؤقت للبيانات والوصول إلى قاعدة البيانات والتحقق من أمان البيانات. لمزيد من المعلومات حول ماهية إطار عمل الويب لبايثون، راجع أطر الويب.

هناك أنواع مختلفة من أطر عمل الويب لبايثون. وتشمل تلك السائدة منها Django و Flask و Tornado و FastAPI.

فلاسك

3.png 3.png

فلاسك هو إطار عمل مصغر خفيف الوزن مصمم لبايثون، مع نواة بسيطة وسهلة الاستخدام تسمح لك بتطوير تطبيقات الويب الخاصة بك. بالإضافة إلى ذلك، فإن نواة فلاسك قابلة للتوسيع أيضًا. لذلك، يدعم Flask تمديد الوظائف المختلفة عند الطلب لتلبية احتياجاتك الشخصية أثناء تطوير تطبيقات الويب. وهذا يعني أنه باستخدام مكتبة من المكونات الإضافية المختلفة في Flask، يمكنك تطوير مواقع ويب قوية.

يتميز فلاسك بالخصائص التالية:

  1. Flask هو إطار عمل مصغر لا يعتمد على أدوات أو مكونات أخرى محددة من مكتبات الطرف الثالث لتوفير وظائف مشتركة. لا يحتوي فلاسك على طبقة تجريد لقاعدة البيانات، ولا يتطلب التحقق من صحة النماذج. ومع ذلك، فإن Flask قابل للتوسعة بشكل كبير ويدعم إضافة وظائف التطبيق بطريقة مشابهة للتطبيقات داخل Flask نفسه. تتضمن الامتدادات ذات الصلة معادلات العلاقة بين الكائنات والتحقق من صحة النماذج ومعالجة التحميل وتقنيات المصادقة المفتوحة وبعض الأدوات الشائعة المصممة لأطر عمل الويب.
  2. Flask هو إطار عمل تطبيق ويب يعتمد على WSGI (واجهة بوابة خادم الويب). WSGI عبارة عن واجهة بسيطة تربط خادم ويب مع تطبيق ويب أو إطار عمل محدد للغة بايثون.
  3. يتضمن Flask مكتبتين أساسيتين للوظائف، Werkzeug و Jinja2. Werkzeug هي مجموعة أدوات WSGI التي تنفذ الطلبات وكائنات الاستجابة والوظائف العملية، والتي تسمح لك ببناء أطر عمل الويب فوقها. Jinja2 هو محرك نمذجة شائع كامل المواصفات لبايثون. يحتوي على دعم كامل ل Unicode، مع بيئة تنفيذ رمل متكاملة اختيارية ولكنها معتمدة على نطاق واسع.

FastAPI

4.png 4.png

FastAPI هو إطار عمل حديث لتطبيقات الويب من بايثون يتمتع بنفس مستوى الأداء العالي الذي يتمتع به Go و NodeJS. يعتمد جوهر FastAPI على Starlette و Pydantic. Starlette عبارة عن مجموعة أدوات إطار عمل ASGI(واجهة بوابة الخادم غير المتزامن) خفيفة الوزن لبناء خدمات Asyncio عالية الأداء. Pydantic عبارة عن مكتبة تحدد التحقق من صحة البيانات وتسلسلها وتوثيقها بناءً على تلميحات نوع Python.

تتميز FastAPI بالخصائص التالية:

  1. FastAPI هو إطار عمل تطبيق ويب يعتمد على ASGI، وهي واجهة بروتوكول بوابة غير متزامنة تربط خدمات بروتوكول الشبكة وتطبيقات Python. يمكن ل FastAPI التعامل مع مجموعة متنوعة من أنواع البروتوكولات الشائعة، بما في ذلك HTTP و HTTP2 و WebSocket.
  2. يعتمد FastAPI على Pydantic، والذي يوفر وظيفة التحقق من نوع بيانات الواجهة. لا تحتاج إلى التحقق بشكل إضافي من معلمة الواجهة، أو كتابة شيفرة إضافية للتحقق مما إذا كانت المعلمات فارغة أو ما إذا كان نوع البيانات صحيحًا. يمكن أن يؤدي استخدام FastAPI إلى تجنب الأخطاء البشرية في التعليمات البرمجية بفعالية وتحسين كفاءة التطوير.
  3. يدعم FastAPI المستند بصيغتين - OpenAPI (Swagger سابقًا) وRedoc. لذلك، لا تحتاج كمستخدم إلى قضاء وقت إضافي في كتابة مستندات واجهة إضافية. يظهر مستند OpenAPI الذي يوفره FastAPI في لقطة الشاشة أدناه.

5.png 5.png

فلاسك مقابل FastAPI

يوضح الجدول أدناه الاختلافات بين Flask و FastAPI في عدة جوانب.

FastAPIفلاسك
بوابة الواجهةASGIWSGI
إطار عمل غير متزامن
الأداءأسرعأبطأ
مستند تفاعليOpenAPI, Redocلا يوجد
التحقق من البيانات
تكاليف التطويرأقلأعلى
سهولة الاستخدامأقلأعلى
مرونةأقل مرونةأكثر مرونة
مجتمعأصغرأكثر نشاطاً

لماذا FastAPI؟

قبل اتخاذ قرار بشأن إطار عمل تطبيق الويب Python الذي سنختاره للمشاريع في Milvus Bootcamp، بحثنا في العديد من أطر العمل السائدة بما في ذلك Django و Flask و FastAPI و Tornado وغيرها. نظرًا لأن المشاريع في Milvus Bootcamp بمثابة مراجع لك، فإن أولويتنا هي اعتماد إطار عمل خارجي في غاية الخفة والبراعة. وفقًا لهذه القاعدة، قلصنا خياراتنا إلى Flask و FastAPI.

يمكنك الاطلاع على المقارنة بين إطاري الويب في القسم السابق. فيما يلي شرح تفصيلي لدوافعنا لاختيار FastAPI على Flask للمشاريع في مخيم ميلفوس بوتكامب. هناك عدة أسباب:

1. الأداء

تتمحور معظم المشاريع في Milvus Bootcamp حول أنظمة البحث العكسي عن الصور، وروبوتات الدردشة لضمان الجودة، ومحركات البحث النصية، والتي تتطلب جميعها متطلبات عالية لمعالجة البيانات في الوقت الفعلي. وفقًا لذلك، نحتاج إلى إطار عمل بأداء متميز، وهو بالضبط ما يميز FastAPI. لذلك، من من منظور أداء النظام، قررنا اختيار FastAPI.

2. الكفاءة

عند استخدام Flask، تحتاج إلى كتابة تعليمة برمجية للتحقق من نوع البيانات في كل واجهة من الواجهات حتى يتمكن النظام من تحديد ما إذا كانت بيانات الإدخال فارغة أم لا. ومع ذلك، من خلال دعم التحقق التلقائي من نوع البيانات، يساعد FastAPI على تجنب الأخطاء البشرية في الترميز أثناء تطوير النظام ويمكن أن يعزز كفاءة التطوير بشكل كبير. يتم وضع Bootcamp كنوع من موارد التدريب. وهذا يعني أن التعليمات البرمجية والمكونات التي نستخدمها يجب أن تكون بديهية وذات كفاءة عالية. في هذا الصدد، اخترنا FastAPI لتحسين كفاءة النظام وتعزيز تجربة المستخدم.

3. إطار عمل غير متزامن

FastAPI هو بطبيعته إطار عمل غير متزامن. في الأصل، أصدرنا أربعة عروض تجريبية، البحث العكسي عن الصور، وتحليل الفيديو، وروبوت الدردشة الآلي لضمان الجودة، والبحث عن التشابه الجزيئي. في هذه العروض التوضيحية، يمكنك تحميل مجموعات البيانات وسيُطلب منك على الفور "تم استلام الطلب". وعندما يتم تحميل البيانات إلى النظام التجريبي، ستتلقى مطالبة أخرى "تم تحميل البيانات بنجاح". هذه عملية غير متزامنة تتطلب إطار عمل يدعم هذه الميزة. FastAPI هو في حد ذاته إطار عمل غير متزامن. لمواءمة جميع موارد Milvus، قررنا اعتماد مجموعة واحدة من أدوات وبرامج التطوير لكل من Milvus Bootcamp و Milvus demos demos. ونتيجة لذلك، قمنا بتغيير إطار العمل من Flask إلى FastAPI.

4. المستندات التفاعلية التلقائية

بالطريقة التقليدية، عندما تنتهي من كتابة الشيفرة البرمجية لجانب الخادم، تحتاج إلى كتابة مستند إضافي لإنشاء واجهة، ثم استخدام أدوات مثل Postman لاختبار واجهة برمجة التطبيقات وتصحيح الأخطاء. إذن ماذا لو كنت تريد فقط البدء بسرعة في جزء تطوير جانب الخادم من المشاريع في Milvus Bootcamp دون كتابة كود إضافي لإنشاء واجهة؟ FastAPI هو الحل. من خلال توفير مستند OpenAPI، يمكن لـ FastAPI أن يوفر عليك عناء اختبار أو تصحيح أخطاء واجهات برمجة التطبيقات والتعاون مع فرق الواجهة الأمامية لتطوير واجهة المستخدم. باستخدام FastAPI، لا يزال بإمكانك تجربة التطبيق المدمج بسرعة مع واجهة تلقائية ولكن بديهية دون بذل جهود إضافية للبرمجة.

5. سهولة الاستخدام

يعد FastAPI أسهل في الاستخدام والتطوير، مما يتيح لك إيلاء المزيد من الاهتمام للتنفيذ المحدد للمشروع نفسه. بدون قضاء الكثير من الوقت في تطوير أطر عمل الويب، يمكنك التركيز أكثر على فهم المشاريع في Milvus Bootcamp.

الخلاصة

لدى Flask و FlastAPI إيجابيات وسلبيات خاصة بهما. كإطار عمل ناشئ لتطبيقات الويب، فإن FlastAPI، في جوهره، مبني على مجموعات أدوات ومكتبة ناضجة، Starlette و Pydantic. FastAPI هو إطار عمل غير متزامن مع أداء عالٍ. وقد دفعتنا براعته وقابليته للتوسعة ودعمه للتحقق التلقائي من نوع البيانات، إلى جانب العديد من الميزات القوية الأخرى، إلى اعتماد FastAPI كإطار عمل لمشاريع Milvus Bootcamp.

يرجى ملاحظة أنه يجب عليك اختيار إطار العمل المناسب وفقًا لسيناريو التطبيق الخاص بك إذا كنت ترغب في بناء نظام بحث عن التشابه المتجه في الإنتاج.

نبذة عن المؤلف

يونمي لي، مهندسة بيانات في Zilliz، تخرجت من جامعة هواتشونغ للعلوم والتكنولوجيا وحصلت على شهادة في علوم الكمبيوتر. منذ انضمامها إلى Zilliz، تعمل على استكشاف حلول لمشروع Milvus مفتوح المصدر ومساعدة المستخدمين على تطبيق Milvus في سيناريوهات العالم الحقيقي. ينصب تركيزها الرئيسي على البرمجة اللغوية العصبية وأنظمة التوصيات، وترغب في تعميق تركيزها في هذين المجالين. تحب قضاء الوقت بمفردها والقراءة.

هل تبحث عن المزيد من الموارد؟

Like the article? Spread the word

استمر في القراءة