
في عام 2018 ، عززت بيثون شعبيتها بين المبرمجين ودخلت
أعلى 3 لغات شعبية على جيثب . المزيد والمزيد من الناس ينتقلون إلى الجانب المشرق ... أي بيثون. لقد ظهر عدد أكبر من المطورين المهتمين بهذه اللغة ويقومون بتطوير مشاريعهم بمساعدتها. واحدة من المناطق الشعبية لبيثون هو تطوير الشبكة. لا أود فقط أن تكون عملية التطوير مريحة وسريعة ، ولكن يمكن للمشاريع نفسها أن تفتخر بالسرعة والاستقرار في العمل.
لدى Python العديد من الأطر التي تحفظ المبرمج من العمليات الروتينية وتتيح لك التركيز على حل المشكلات. في عام 2018 ، تم تحديث الأطر الحالية وظهرت أدوات جديدة.
لذلك ، قررنا تجميع تحليل مقارن للأطر الشعبية التي لن تخسر ، كما نأمل ، أهميتها طوال عام 2019 وتحديد الأسرع منها.
اختبار المشاركين
الإصدار: 2.1.4
الوصف: المعالج الأكثر شيوعًا لـ Python ، والذي يعمل على حل العديد من المشكلات (لوحة المشرف ، التخويل ، التسجيل ، ORM ، إلخ). يعمل ذلك على تبسيط حياة المطور ، ولكن إذا حددنا أولوية سرعة العمل ، فغالبًا ما يلعب مثل هذا المعالج ضدنا وهذا يؤثر على الإنتاجية. لهذا السبب ، على الأرجح لن يحصل على جائزة أسرع إطار عمل بايثون في عام 2019.
الإصدار: 1.0.2
الوصف: إطار بيثون الأكثر شعبية (حتى دجانغو يتفوق على النجوم على جيثب). خيار شائع في حالات تطوير المشاريع الصغيرة التي لا تحتاج إلى تلك الكعك الموجودة في جانغو. يسمح لك بنشر التطبيق بسرعة. ربما أسرع من Django من حيث السرعة ، ولكن لديها وظائف قليلة للغاية خارج الصندوق.
الإصدار: 3.5.1
الوصف: إطار عمل بايثون غير متزامن جذاب للغاية. يحتوي على إصدار عميل وخادم ، مما يحرر يديك بشكل كبير أثناء التطوير. لديها طلبات غير متزامنة مريحة للغاية من إصدار العميل ، وكذلك مؤشرات جيدة للغاية لسرعة الخادم مع عدد كبير من الطلبات. بالتأكيد يجب أن ندخل في المراكز الثلاثة الأولى.
الإصدار: 18.12
الوصف: يمكننا القول أن هذا "قارورة متعددة الخيوط" مع كل العواقب. لهذا السبب ، نعتقد أن النتائج يجب أن تكون جيدة جدا.
الإصدار: 5.1.1
الوصف: أحد المحاربين القدامى غير المتزامنين لحركة بيثون ، حدد اتجاه عدم التزامن في عام 2010. لا تفقد أهميتها وحصلت على الإصدار الخامس في عام 2018. عتبة دخول عالية إلى حد ما للمبتدئين. شعبية بين بيثون المدرسة القديمة ، ونحن نعتقد لسبب وجيه. يجب أن تظهر نتائج جيدة.
نسخة مختبرة: لا توجد إصدارات على جيثب
الوصف: حصل إطار عمل واعد ظهر في يونيو 2018 وعلى مدار الأشهر الستة الماضية على أكثر من 4000 نجم. لديه قياسات أداء رائعة على جيثب. كنا نظن أن Vibora سيكون المفضل في سباقنا ، ولكن لسوء الحظ بسبب عدم القدرة على الترشح تحت Python> = 3.7 وعدم وجود نسخة ثابتة من الإطار ، استبعدنا Vibora.
في جيثب ، يعد المطورون بـ Vibora جديد تمامًا قريبًا. دعونا نرى ما يفعلونه وتأكد من الكتابة عنه.
منهجية الاختبار
تم إجراء الاختبار على Apple iMac 27 '' Retina 5K 2017 ، وحدة المعالجة المركزية: 3.5 جيجا هرتز i5 ، ذاكرة الوصول العشوائي: 8 جيجابايت ، 1000 جيجا فيوجن درايف ، OSX 10.14.2 باستخدام الأداة المساعدة
WRK :
wrk -t12 -c400 -d30s http://127.0.0.1:8080/db/
وأجريت اختبارات على بيثون 3.7.2. تم إطلاق جميع الأطر باستخدام
Gunicorn مع اثنين من العمال. ربما في بعض الحالات ، قد يؤثر استخدام
uwsgi على النتائج ، ولكن بما أننا حددنا الهدف لاختبار الأطر ، وليس كيفية تشغيلها ، فقد قررنا إهمال ذلك.
كان لدينا نوع واحد فقط من الاختبارات: اختبار DB ، حيث نحصل على بيانات السلسلة من قاعدة البيانات ونعيدها كرد html (إدخال واحد في 79 بايت). تم استخدام Postgres 11 كقاعدة بيانات.
تم استخدام
Psycopg2 كمحرك وصول إلى قاعدة البيانات للأطر المتزامنة و
asyncpg للأجهزة غير المتزامنة.
قررت مكتبات الأطر غير المتزامنة استخدام
uvloop كحلقة حدث.
النتائج
طلبات في الثانية الواحدة

مناصب قيادية متوقعة من قبل aiohttp و Sanic ، لكن نتائج غير متوقعة من Tornado.
نقل البيانات في الثانية (كيلو بايت)

Django متأخرة كثيرا في كمية البيانات المنقولة في الثانية الواحدة.
متوسط وقت الطلب (مللي ثانية)

مرة أخرى مفاجآت غير سارة تورنادو ، والتي اعتمدنا عليها في البداية. مثير للإعجاب هو دورق ، والذي ينافس متوسط وقت الاستعلام مع القادة المحتملين.
الحد الأقصى لوقت الطلب (بالثانية)

جميع "التجريبية" أظهرت نفس النتائج تقريبًا لوقت الاستعلام الأقصى. كل شيء ، كما توقعنا.
النتائج النهائية
12 المواضيع
400 اتصال
| متوسط | ماكس | طلبات / ثانية | نقل / ثانية (KB) |
الكمون (مللي ثانية) | ةداملا مسا / ثانية | الكمون (مللي ثانية) | ةداملا مسا / ثانية |
جانغو | 147.99 | 120.91 | 1.98 | 640 | 425.71 | 78،99 |
قارورة | 186.8 | 65.65 | 1.75 | 280 | 546.2 | 127.48 |
aiohttp | 165.07 | 247.16 | 1.98 | 585 | 1966.28 | 439.72 |
سانيك | 194.8 | 170.85 | 1.98 | 470 | 1520.9 | 292.6 |
اعصار | 279.3 | 101.71 | 1.74 | 272 | 778.75 | 222.07 |
ملخص
Aiohttp: قائد الأداء في بداية عام 2019. إذا كانت مهمتك تتطلب الأداء النهائي ، فعليك إلقاء نظرة فاحصة عليها. بالإضافة إلى ذلك ، يمكنك تجربة خيارات بدء تشغيل aiohttp للضغط على المزيد منها. يحتوي على إصدار عميل يتيح لك تقديم طلبات غير متزامنة بدون مكتبات إضافية. لذلك ، لتنفيذ الخدمة الجديدة المحملة للغاية ، اخترناها.
سانيك: شعبية إطار العمل تتقدم في أدائه. لم تحدث المعجزة ولم يتفوق على القائد. جنبا إلى جنب مع موضوع على رديت حول مشاكل الأمن - لن نستخدم Sanic الآن وانتظر اتخاذ إجراء من المطورين.
تورنادو: "خيبة أمل العام". فيما يتعلق بالنتائج - لا نعتقد أنه ينبغي اختيار تورنادو لتنفيذ أي مشاريع جديدة. نأمل أن يأتي المطورون بشيء ما ويصحح الموقف.
أظهر
جانغو النتيجة المتوقعة. نحن نحب جانغو لميزاتها وتخفيفنا من الروتين ، وليس لسرعة العمل. مجتمع واسع ، وعدد كبير من المواد على الويب ، وعدد كبير من المشاريع المنفذة في المجال العام - كل هذا يجعلها جذابة للمبتدئين. إذا كانت لدينا مهمة تطوير MVP لخدمة ويب نموذجية بسرعة ، فسنختارها في عام 2019.
قارورة أظهرت أيضا النتيجة المتوقعة. تجاوز Django بسبب حقيقة أنه لا يوجد لديه مثل هذه الوظائف الغنية من خارج منطقة الجزاء. أنا لم تصل إلى سرعة الأطر غير المتزامنة. سنختارها في عام 2019 لتنفيذ مشاريع الحيوانات الأليفة الصغيرة أو عندما تكون السرعة مهمة بالفعل ، ولكن لا توجد رغبة في التعامل مع الأطر غير المتزامنة حتى الآن.
يمكنك مشاهدة جميع ملفات مرجعية المصدر في مستودع
Python Frameworks Benchmark .