[البرمجة] أسرع إطار عمل ويب Python: wheezy.web

Wheezy_web_logo

Wheezy.web ليس لديها شعار ؛ لقد صنعت الصورة في GIMP.

لفترة طويلة توقفت عن البرمجة في Python ، لكن هذا لا يمنعني من مشاركة التقنيات التي أعرفها معك ؛). منذ بعض الوقت ، دخلت في عملية البحث عن "أفضل" إطار عمل ويب في Python ، حيث أن الإطار الذي استخدمته (Web2Py) كان بطيئًا للغاية. بحثي قادني إلى Wheezy.web؛ أولئك الذين يعرفونه فعلوا ذلك بالتأكيد من خلال مقياس أداء مذهل قام به المؤلف على مدونته:

أسرع إطار عمل ويب

أنا أعلم، 25.000 طلب في الثانية مقارنة ببقية الأطر ، فهي تمريرة حقيقية. لقد استخدمت نفسي Wheezy.web لفترة من الوقت ويجب أن أقول إنه عمل فني حقيقي. أينما نظرت إليه: السرعة والبساطة والأمان ... كل شيء. وفوقها عمل شخص واحد: أندريه كورناتسكي.

  • يعمل مع بيثون 2, بيثون 3 y الجرو. حتى إذا أعطت 3 أداء أفضل ، فمن الأفضل الاستمرار في استخدام 2 حتى تنضج 3 بشكل كافٍ.
  • تصميمه وحداتولذلك Wheezy.web هي المزيد من الأشياء: whezy.template, Wheezy.html, الأمن... استخدم الأجزاء التي تريدها.
  • توثيق بسيطة وسهلة الفهم.
  • تحسين تلقائي لـ HTML (يضغطها بحيث تأخذ أقل دون استخدام أدوات خارجية).
  • كيف يمكن أن يكون الأمر على خلاف ذلك برمجيات مجانية ومفتوحة المصدر ؛ د.
  • الخ ...

في مدونة Andriy ، توجد دروس رائعة لـ تثبيت Wheezy.web لتجف o مع i18n (لغات متعددة)؛ يشرح أيضا كيف تستعمل Wheezy.web مع Nginx. الجانب السلبي لجميع دروسه هو أن افترض أنك تستخدم دبيان، لأنه لم يختبر على توزيعات أخرى.

إذا كنت تستخدم فيدورا وأنت مهتم Wheezy.web، انت محظوظ! إليك الأمر الذي سيقوم بتثبيت الحزم الضرورية لتتمكن من متابعة دروسها التعليمية:

sudo dnf install python python-devel python3 python3-devel python-setuptools python-virtualenv libxml2 libxml2-devel libxslt libxslt-devel libmemcached libmemcached-devel memcached memcached-devel gzip ntpdate gettext uwsgi uwsgi-plugin-python socat nginx

البرنامج التعليمي الذي يقدمه Andriy للتثبيت Wheezy.web مع Nginx ، يستخدم نصًا مصممًا خصيصًا لدبيان ، لذلك سيكون عليك القيام بذلك بنفسك إذا كنت تستخدم نظامًا مختلفًا. في حالتي ، فإن uWSGI كافٍ بالنسبة لي ، لذلك لم أجربه مطلقًا.

الحقيقة هي أن الموجودة Wheezy.web أجد أن استخدام إطار عمل آخر يعد جريمة ، لذا إذا كنت تعمل مع Python ، فقم بإلقاء نظرة عليه على الأقل! العيب الوحيد الذي يمكن أن يعزى إليه هو أنه لا يجلب أي طبقة من التجريد لتسهيل العمل مع قواعد البيانات (ولا يحتاج إلى ذلك ، ولكن هناك أشخاص يقدرونه).

و هذا كل شيء. مقالة قصيرة ولكنها ذات صلة. أعدك بجلب تقنيات أكثر إثارة للاهتمام! اراك ~.

بالمناسبة ، من الفضول ، هل تعرف لماذا يطلق عليه "صرير"؟ Andriy من محبي دبيان. أتركه هناك ؛).


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   برونو كاسيو قال

    الأداء ليس العامل الوحيد. بالمقارنة مع Django ، فهو غير قابل للقراءة تمامًا. وبصراحة ، يجب رؤية 25000 طلب في الثانية أثناء العمل ، لكنني أفضل البقاء مع 15000 (django) للكتابة بشكل صحي ، وبقية مندوب العمل إلى البنية التحتية ، وهو حقًا الشخص الذي سيتلقى أو لا ، 25000 طلب.

    مع تحياتي! شكرا على البيانات 🙂

    1.    برونو كاسيو قال

      وغني عن القول ، من أجل قياس الأداء ، أستخدم إصدارات قديمة من أطر أخرى ...

      1.    لاجيتو قال

        المقالة المعيارية من عام 2012. قام بتعديلها وتوسيعها مرة أخرى في عام 2013 وحدد هو نفسه أنها من تلك السنة: «أحدث الإصدارات المتاحة حتى كتابة هذه السطور (15 مارس 2013)»

    2.    لاجيتو قال

      عدم الوضوح الذي ذكرته لا أعتقد أنه بهذا السوء. أتفهم أنه يتم البحث عن سهولة البرمجة غالبًا ، لكن لا أعتقد أن هناك اختلافات كبيرة حقًا. لقد استخدمت Web2Py لمدة عام ، وأؤكد لكم أنه أحد أسهل الأطر المتاحة لاستخدامها. بالطبع ، أداؤها سيء من نواحٍ عديدة ... في مقال معياري ، أجرى ماسيمو دي بييرو نفسه (مبتكر Web2Py) نقاشًا مع أندري أقر فيه أخيرًا أن هناك الكثير لتحسينه ؛ أثناء حديثه مع Andriy على IRC ، قال لي "هناك فلسفة مقبولة على نطاق واسع لوضع كل شيء في أطر وتضخيمها بالميزات حتى لو لم يتم استخدام معظمها" ، وكم كان محقًا ...

      حول ما تقوله عن البنية التحتية ، أشارك ما تقوله جزئيًا ؛ فرق 10.000 هو الكثير ، خاصة عندما نتحدث عن إطار العمل الأكثر شهرة ونضجًا مقابل إطار حديث جدًا وغير معروف. أسلوبي دائمًا هو الجمع بين الحد الأقصى من الكفاءة والإنتاجية القصوى ، وأعتقد أن Wheezy.web هو الأفضل. لقد استخدمت Web2Py (أكثر من غيرها) ، و Django ، و Pyramid ، و Wheezy.web وأؤكد لكم أنه لا مثيل له. بمجرد أن تتكيف مع طريقته في فعل الأشياء ، لا تنفصل عنه. المزايا الوحيدة لـ Django هي المجتمع الكبير الذي يمتلكه والموارد الموجودة في جميع أنحاء الإنترنت ؛ وهذا يعني: سهولة. Wheezy.web جديد إلى حد ما بالمقارنة ، وقلة قليلة من الناس يعرفون عنه ؛ إذا ذهبت بسهولة ، أفضل Web2Py أو Django xD.

      لا أرغب في التوسع ، لكن عندما نتحدث عن الطلبات في الثانية نتحدث عن التزامن. إذا تم البحث عن التزامن ، فإن Python ليست اللغة المناسبة. هذا ما تستخدمه اللغات الأخرى مثل Erlang أو Haskell (وإذا عجلتني ، Rust). ولكن لهذا السبب على وجه التحديد ، من المثير للإعجاب أن يتمكن Whezy.web ، الذي يحتل القليل جدًا من التعليمات البرمجية ، كونه عمل شخص في أوقات فراغه وعوامل أخرى ، من تحقيق مثل هذا الأداء.

      أتفهم ما تقوله عن "الكتابة السليمة" ، لكنك لا تعرف أبدًا مدى نمو المشروع على المدى الطويل. باستخدام أدوات أكثر كفاءة ومتزامنة ، فضلاً عن كونها بسيطة (أؤكد أن Wheezy.web بسيط بالنسبة للأداء الذي يمتلكه) ، وفر المال واجعل حجم المشروع لفترة أطول دون تغيير اللغة. في النهاية ، كل شيء موجود في المال الذي يتعين على المرء دفعه مقابل خادمه. هناك مواقع ويب مشهورة جدًا في PHP ، عندما تكون PHP سيئة في الأداء ... لكن كيف تحل هذه المشكلة؟ شراء خوادم أفضل. مع النهج الآخر ، يتم حلها عن طريق البرمجة بشكل أفضل وتوفير الموارد: P.

      أنا آسف لأنني مدت نفسي كثيرًا. أنا متحمس جدًا لـ xDDD. مع تحياتي!

      1.    برونو كاسيو قال

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

        من وجهة نظري ، من الأفضل عدم الزواج من أي لغة. إذا كنت تريد التزامن ، فيمكنك استخدام Node أيضًا ، حيث يعمل محركها في C.

        ما ذكرته عن الأداء ، ليس فقط التوسع الرأسي (حالة PHP) ، فيسبوك على سبيل المثال يقدم HHVM ، الذي قرأته (لم يتم اختباره) الذي يحسن الأداء بنسبة 50٪ وهذا ليس شراء الخوادم. ببساطة ، PHP بدون طبقات ذاكرة التخزين المؤقت و / أو طرق أخرى للتحسين هي "سيئة" مثل أي لغة أخرى بدون الأخيرة ، وأعني أنه من السيئ إعطاءهم اسمًا ، إنها ليست مجرد "برمجة أفضل".

        تحية! 🙂

      2.    لاجيتو قال

        دعونا نرى ، ما لا يوجد هو طبقة من التجريد. لكنك تستخدم المكتبة أو الوحدة النمطية المقابلة للعمل مع قاعدة البيانات الخاصة بك وخارجها ، لم يعد هناك غموض. طبقة التجريد Web2Py بسيطة جدًا ، على سبيل المثال ، لكن الأداء ينخفض ​​بشكل كبير حيث لا يمكنك حتى كتابة SQL محسّن. كل شيء في بايثون. سهل ، ولكن في مقابل الأداء.

        أنا أعرف HHVM وهذا هو بالضبط سبب كون اللغات مثل PHP فظيعة في العصر الحديث. إذا كان Facebook في Haskell أو Erlang ، فلن يكون من الضروري إنشاء HHVM. استخدم ذاكرة التخزين المؤقت ، واضغط الملفات المرسلة والمستلمة ، إلخ. إنها جوانب واضحة لأي تطور. المشكلة هي أن الأداة يجب أن تقاس :). وهناك أدوات لا توفرها. أفضل مثال على ذلك هو JavaScript ... في هذه الحالة على الأقل توجد عجائب مثل CoffeeScript و Dart وما إلى ذلك. والتي يتم تجميعها إلى JS.

        تحيات!

      3.    برونو كاسيو قال

        في احسن الاحوال! 🙂

        شيء واحد فقط ، facebook إذا كنت تستخدم haskell ، وبشكل أكثر دقة Haxl 🙂

      4.    سيزار قال

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

        بالمناسبة ، في web2py إذا كان يمكنك كتابة SQL لإجراء الاستعلامات مباشرة.

        تحية.

  2.   urKh قال

    أسرع إطار عمل ويب تقوله ، لكنك لا تعرض أي مثال وعوامل رئيسية أخرى ، مثل التطوير والإنتاجية والتوثيق. مع وجود django ، لا أعرف لماذا يبدو أن عدم استخدام هذا يعتبر جريمة: p

    1.    لاجيتو قال

      - هناك بالفعل أمثلة في الوثائق. على صفحة BitBucket الخاصة به أيضًا: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - فيما يتعلق بالتنمية والإنتاجية ، أنا شخصياً أعتقد أن تلخيصها بـ "البساطة" هو خيار جيد. ما هي أطر أبسط وأسهل حتى الآن؟ بالتأكيد. ولكن ليس مع هذا القدر من الأداء.
      - لقد وضعت رابط التوثيق في مقال xDDD.
      - لماذا أقول إنها جريمة لأنني أعتقد أن صفحة الويب يجب أن تكون فعالة قدر الإمكان ، من جميع النواحي. كما ذكرت من قبل ، هناك أطر عمل أسهل في الاستخدام ، لكن استخدام Wheezy.web ليس برمجة C أيضًا. عليك فقط المحاولة بجدية :).

      تحياتي ^ ^.

  3.   لاجيتو قال

    بالمناسبة ، إذا كان أي شخص كسولًا في اكتشافه ويعتقد أن Wheezy Web يفوز فقط في الطلبات في الثانية ... إليك بعض المعايير الإضافية:

    http://paste.desdelinux.net/5128 (el filtro de spam de DesdeLinux no me deja poner tantos links)

    أعتذر عن عدم إدراجهم مسبقًا. اعتقدت أن واحدًا كان كافيًا لجذب فضول xD. مع تحياتي!

  4.   Fenriz قال

    سعيد حتى الآن مع Django.

    1.    أوكلاي قال

      في كل مرة أقرأ فيها هذه الأشياء أشعر بالغضب ، اعتقدت أنها كانت فقط مع أطر عمل php (Symfony، Yii، CondeIgniter، Phalcon ……… wdf !!). إذا كان لدى Django بالفعل مجتمع (كبير جدًا) وهو إطار عمل ممتاز ، فبدلاً من إضاعة الوقت في إعادة اختراع العجلة ، لا تنضم إلى فريق django. @ Lajto في محادثتك مع مؤلف Wheezy.web لماذا لا تسأله إذا لم تفكر أبدًا في الانضمام إلى فريق django ، اللعنة. هتافات ..

      1.    لاجيتو قال

        على الرغم من أن كلاهما عبارة عن أطر عمل ويب ، إلا أنهما لهما طرق مختلفة جدًا. إن Django ثقيل ، وله الكثير من الأكواد ، بينما Whezy.web خفيف ، فهو ملتزم بالبساطة والتحسين. على حد علمي ، فإن Whezy.web هو إطار عمل ويب Python المعياري الوحيد حقًا (أي أنه يقسم كل كوده إلى أجزاء مختلفة يمكن أن تعمل بشكل مستقل). لها العديد من الخصائص التي تميزها عن البقية.

        لماذا لا تنضم إلى Django ، كما تقول؟ لأن Django تم تصميمه بأساليب مختلفة تمامًا. كيف تقوم بتطبيق تصميم معياري على Django؟ يجب إعادة صنعه عمليا من الصفر! الشيء نفسه مع العديد من القضايا الأخرى.

        أفهم أن "إطار عمل واحد أفضل يعمل بشكل جيد مع مجتمع كبير" هو شعور ، لكن الأمر ليس بهذه السهولة. فقط لكي تفهم ، من خلال تكوين ارتباط سطحي ، فإن Django يبدو كما لو كان Debian و Wheezy.web كما لو كان… قوس؟ جنتو؟ إنه بالتأكيد مثال سيء ، لكنني أعتقد أن xDDD مفهوم.

        تحيات!

  5.   اوليسيس قال

    ماذا عن Lajto ، مرحبًا ، أنا أقوم بإنشاء تطبيق وقرأت وثائق Wheezy.web وهو أول إطار عمل ويب للبيثون فهمته في المرة الأولى 🙂 كما ترى ، ليس لدي الكثير من المعرفة بالشبكات والويب ، لكنني لها جاذبية خاصة في البرمجة.
    هل يمكنك مساعدتي في كيفية تعديل عالم الترحيب لجعله خادمًا عامًا؟ ربما يكون سؤالًا سخيفًا للغاية ، آسف ، لكن لا يمكنني العثور على كيفية القيام بذلك في الوثائق.
    سؤال آخر ، 😉 في طرق get و post ، حيث أعيد معلومات ليست صفحة html ، هل أعيد المعلومات كما هي؟ كسلسلة أو قائمة أو أي نوع من البيانات. العميل تطبيق في android.

    1.    لاجيتو قال

      مرحبا أوليسيس! أنا سعيد للغاية لأنك تختبر Wheezy.web: D.

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

      افتح Terminal وقم بتشغيل هذه الأوامر الأربعة (استبدل "test-web" باسم المجلد الذي تريده لمشروعك):

      مجلد مشترك https://bitbucket.org/akorn/wheezy.web/downloads/quickstart-empty.zip

      قم بفك ضغط Quickstart-empty.zip

      اختبار ويب سريع البدء فارغ mv

      rm Quickstart-empty.zip

      إذا كنت تريد استخدام PIL ، فعدّل ملف setup.py وأزل التعليق عن الكود المقابل. بمجرد أن تصبح جاهزًا ، قم بتشغيل الأوامر الثلاثة التالية:

      اختبار الويب cd

      جعل البيئة

      env / bin / easy_install uwsgi

      تم تحميل الخادم الخاص بك بالفعل. إذا كنت تريد إجراء اختبار أداء سريع لمعرفة ما إذا كان يعمل ، فكونك داخل المجلد ، فأنت تقوم بتشغيل:

      جعل اختبار غطاء الأنف المعيار

      أوصيك بالذهاب إلى "etc / development.ini" وتغيير "limit-as = 120" إلى "limit-as = 512". هذا هو عدد ميغابايت من ذاكرة الوصول العشوائي uWSGI التي "تستهلك" ، لذلك يمكن زيادتها في المستقبل إذا لزم الأمر.

      أخيرًا ، في كل مرة تريد فتح الخادم الخاص بك ، سيكون كافيًا تحديد مكانك في مجلد المشروع الخاص بك وتنفيذ:

      اصنع uwsgi

      بالنسبة للأسئلة الأخرى ... بشكل افتراضي ، تتم برمجة الخادم للتشغيل على المضيف المحلي. إذا كنت تريد جعله عامًا ، لأنك جاهز بالفعل وتريد استخدامه على خادم فعلي في الإنتاج ، فما عليك سوى فتح "src / app.py" وتحديد موقع ما يلي: make_server ("، 8080 ، main). المعلمة الأولى عبارة عن سلسلة فارغة ، أليس كذلك؟ حسنًا ، هناك تضع عنوان IP الخاص بخادمك. المعامل الثاني هو المنفذ الذي تريد استخدامه ، وهو افتراضيًا 8080.

      أخيرًا ، ما تقوله عن إرجاع شيء آخر غير HTML ، بالطبع يمكنك ذلك! يشرحون في الوثائق كيفية إرجاع كل شيء: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      تحيه! أي شيء تقوله لي ؛).

      1.    اوليسيس قال

        شكرًا جزيلاً Lajto ، لقد أوضحت حقًا شكوكي ، لقد جربت مع django ولكن كما أخبرتك أنا لست مهندس أنظمة و django أعتقد أنه يجلب أكثر بكثير مما كنت بحاجة إليه ، استخدم Wheezy.web لاختبار تطبيق في android وتوصيله مع الخادم. شيء بسيط للغاية ولكنه سريع وعملي. مرحبًا بسؤال آخر ، لقد رأيت مؤخرًا أن هناك ضجة كبيرة مع http / 2 ، كيف أعرف ما هو البروتوكول الذي يعمل عليه Whezy.web؟ هل يمكنني إنشاء خادم يستخدم http / 2 في wheezy.web؟ أو أنصحني بكتاب ، أو مدونة ، أو برنامج تعليمي موجود في كتل يمكن أن تشرح كل مسألة الشبكات والاتصالات. شكرا لك مرة أخرى.

      2.    لاجيتو قال

        مرحبًا مرة أخرى Ulises ^ ^.

        HTTP / 2 حديث جدًا ولن يتم اعتماده بجدية لمدة عام آخر ، لذلك لا تهتم به :). إذا كنت تريد الأمان ، فاستخدم HTTPS وهذا كل شيء.

        لست متأكدًا مما يستخدمه Wheezy Web لـ HTTP ، لذلك أفترض أنه سيكون WSGI.

        تحية!

  6.   لاجيتو قال

    بالمناسبة ، القليل من لا شيء. في بعض التوزيعات ، تظهر رسالة تحذير حول .python-egg. لا يحدث شيء إذا ظهر ، ولكن إذا وجدته مزعجًا ، يمكنك إزالته باستخدام:

    chmod go = ~ / .python-egg

    تحيات!

  7.   دييغو قال

    أنا أستخدم Django ، لكنني سأتحقق من الوثائق لأرى كيف يعمل. شكرا للمشاركة. مع تحياتي

  8.   JD فيليجاس قال

    يمكن استخدامه من الويندوز !!! ، هل يوجد برنامج تعليمي ؟؟

    شكرا

  9.   اليتا قال

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