"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يكون ملف UploadFile الخاص بـ FastAPI في بعض الأحيان أبطأ من Flask؟

لماذا يكون ملف UploadFile الخاص بـ FastAPI في بعض الأحيان أبطأ من Flask؟

تم النشر بتاريخ 2024-11-09
تصفح:303

Why is FastAPI's UploadFile Sometimes Slower Than Flask?

أداء FastAPI UploadFile مقارنة بأداء Flask

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

إليك سبب كون UploadFile الخاص بـ FastAPI أبطأ:

  • حظر الإدخال/الإخراج: بشكل افتراضي، تستخدم أساليب UploadFile الخاصة بـ FastAPI عمليات حظر الإدخال/الإخراج، والتي يمكن أن تعيق الخيط الرئيسي وتبطئ واجهة برمجة التطبيقات.
  • تقطيع البيانات: يستخدم Starlette (الإطار الأساسي لـ FastAPI) ملف SpooledTemporaryFile بحد أقصى افتراضي يبلغ 1 ميجابايت. بمجرد أن تتجاوز البيانات هذا الحجم، تتم كتابتها إلى ملف مؤقت على القرص، مما يضيف مستوى آخر من حمل الإدخال/الإخراج.

أفضل الممارسات لتحميلات الملفات الفعالة في FastAPI:

الكتابة غير المتزامنة للملفات باستخدام ملفات aiofiles

استخدم كتابة الملفات غير المتزامنة مع مكتبة aiofiles لكتابة الملفات بطريقة غير محظورة. يعمل هذا الأسلوب على تحسين الأداء، خاصة بالنسبة للملفات الكبيرة.

قراءة الملف في أجزاء

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

استخدام run_in_threadpool()

لتجنب حظر سلسلة المحادثات الرئيسية، استخدم وظيفة run_in_threadpool() الخاصة بـ FastAPI لتنفيذ عمليات حظر الإدخال/الإخراج في موضوع منفصل. وهذا يضمن تنفيذ المهام المتعلقة بالملفات دون حظر.

الوصول المباشر إلى نص الطلب كمجرى

في الحالات التي لا يكون فيها تخزين الملفات على الخادم ضروريًا، يمكنك الوصول إلى نص الطلب مباشرة كملف الدفق باستخدام request.stream(). تسمح هذه الطريقة بمعالجة الملفات بكفاءة دون تكبد حملات إدخال/إخراج غير ضرورية.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3