CherryPy

CherryPy هو إطار عمل لتطبيقات الويب كائنية التوجه يستخدم لغة البرمجة بايثون . صُمم لتطوير تطبيقات الويب بسرعة من خلال تغليف بروتوكول HTTP ، ولكنه يبقى على مستوى منخفض ولا يقدم أكثر بكثير مما هو محدد في RFC 7231 .

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

واجهة بايثونية

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

على سبيل المثال، سيبدو برنامج "Hello World" الشائع باستخدام CherryPy 3 كما يلي:

استيراد cherrypyclass HelloWorld : def index ( self ): return " Hello World! " index.exposed = Truecherrypy.quickstart ( HelloWorld ( ) )

أو، كما يظهر المثال الحالي على موقعهم الإلكتروني، باستخدام مُزخرفات بايثون لعرض مسار الفهرس تلقائيًا:

استيراد cherrypyclass HelloWorld ( object ): @cherrypy.expose def index ( self ) : return "Hello World! "cherrypy.quickstart ( HelloWorld ( ) )

سمات

تُنفذ CherryPy ما يلي:

  • خادم ويب متوافق مع بروتوكول HTTP/1.1، ويعمل بتقنية WSGI مع تجميع الخيوط . [ 4 ] عادةً، يستغرق CherryPy نفسه من 1 إلى 2 مللي ثانية فقط لكل صفحة. [ 5 ] [ 6 ]
  • دعم أي خادم ويب أو محول آخر يدعم WSGI، بما في ذلك Apache و IIS و lighttpd و mod_python و FastCGI و SCGI و mod_wsgi .
  • محول أصلي لـ mod_python .
  • خوادم HTTP متعددة (على سبيل المثال، القدرة على الاستماع على منافذ متعددة). [ 7 ]
  • نظام المكونات الإضافية [ 8 ] تتصل مكونات CherryPy الإضافية بالأحداث داخل عملية الخادم - بدء تشغيل الخادم، وإيقاف تشغيل الخادم، وخروج الخادم، وما إلى ذلك - لتشغيل التعليمات البرمجية التي يجب تشغيلها عند بدء تشغيل الخادم أو إيقاف تشغيله.
  • أدوات مدمجة للتخزين المؤقت ، والترميز ، والجلسات ، والتفويض ، والمحتوى الثابت، وغيرها. تتكامل أدوات CherryPy مع الأحداث ضمن عملية الطلب . فعندما يتلقى خادم CherryPy طلبًا، يمر بمجموعة محددة من الخطوات لمعالجته. تُعد معالجات الصفحات خطوة واحدة فقط في هذه العملية. كما توفر الأدوات واجهة برمجة تطبيقات (API) لتكوينها وتفعيلها أو تعطيلها لمجموعة محددة من المعالجات.
  • نظام تكوين للمطورين والمنفذين. [ 9 ] [ 10 ] [ 11 ] يمكن تكوين عمليات نشر CherryPy على مستوى الموقع، وعلى مستوى التطبيق، وعلى مستوى وحدة التحكم، من خلال قواميس بايثون، وملفات التكوين، وكائنات الملفات المفتوحة.
  • مجموعة اختبارات كاملة للوظائف الأساسية والإطار المرتبط بها والتي يمكن استخدامها لاختبار تطبيقات CherryPy. [ 12 ]
  • تم تضمين خاصية تحديد الملفات الشخصية منذ الإصدار 2.1، [ 13 ] والتغطية [ 14 ] ودعم الاختبار.

لا يجبرك CherryPy على استخدام أداة ربط الكائنات العلائقية (ORM) أو لغة القوالب أو مكتبة JavaScript محددة .

يمكن استخدامه مع CherryPy

  • Routes — إعادة تنفيذ بلغة بايثون لنظام المسارات الخاص بـ Ruby on Rails لربط عناوين URL بوحدات التحكم/الإجراءات وإنشاء عناوين URL. [ 15 ]

أدوات ربط الكائنات العلائقية

لغات القوالب

  • ماكو [ 19 ] - مكتبة قوالب مكتوبة بلغة بايثون، قابلة للاستخدام مع أداة CherryPy بسيطة. [ 20 ]
  • شيتا — محرك قوالب مفتوح المصدر وأداة لتوليد التعليمات البرمجية، مكتوبة بلغة بايثون.
  • CherryTemplate — لغة قوالب لـ CherryPy.
  • Genshi [ 21 ] [ 22 ] — لغة قوالب XML قوية.
  • جينجا - لغة قوالب للأغراض العامة. لدى CherryPy أداة لاستخدام قوالب جينجا. [ 23 ]
  • Kid هي لغة قوالب بسيطة للمفردات القائمة على XML مكتوبة بلغة بايثون. يستخدم TurboGears 1.x مكتبة CherryPy كخادم ومكتبة Kid كواجهة أمامية. [ 24 ]

تساعد ويكي CherryPy [ 25 ] في اختيار لغة القوالب.

منتجات تستخدم CherryPy

  • TurboGears — CherryPy 2.x هو مكون رئيسي من TurboGears 1.x.
  • Splunk Enterprise - CherryPy 3.1.2 [ 26 ]

انظر أيضاً

مراجع

  1. "تاريخ CherryPy" .
  2. "الإصدار v18.10.0" . 15 يونيو 2024. تم الاطلاع عليه في 2 فبراير 2025 .
  3. "cherrypy / CherryPy / source / cherrypy / LICENSE.txt" . BitBucket. مؤرشف من الأصل بتاريخ 15 يوليو 2017. تم الاطلاع عليه بتاريخ 21 فبراير 2015 .
  4. "CherryPy — إطار عمل ويب بسيط بلغة بايثون" .
  5. "نتائج اختبار أداء خادم CherryPy v3 WSGI" . مؤرشف من الأصل بتاريخ 2016-03-03 . تم الاطلاع عليه بتاريخ 2009-09-23 .
  6. ما مدى سرعة CherryPy؟ مؤرشف بتاريخ 10 فبراير 2010 في Wayback Machine
  7. "كيفية إعداد عدة خوادم HTTP باستخدام CherryPy" . مؤرشف من الأصل بتاريخ 2016-03-03 . تم الاطلاع عليه بتاريخ 2009-09-23 .
  8. إضافات محرك مخصصة مع CherryPy ( مؤرشفة في 3 مايو 2009 على Wayback Machine)
  9. نظام تهيئة CherryPy، مؤرشف بتاريخ 26 يونيو 2009 في Wayback Machine
  10. واجهة برمجة تطبيقات التكوين الخاصة بـ CherryPy، مؤرشفة في 1 يوليو 2009 على موقع Wayback Machine
  11. ملخص موجز لخيارات التكوين
  12. كيفية اختبار CherryPy نفسها ( مؤرشف في 27 سبتمبر 2009 على Wayback Machine)
  13. وحدة تحليل الأداء في CherryPy، مؤرشفة في 9 فبراير 2010 على موقع Wayback Machine
  14. "كيفية جمع وتحليل بيانات تغطية كود التطبيق باستخدام CherryPy" . مؤرشف من الأصل بتاريخ 17 نوفمبر 2015. تم الاطلاع عليه بتاريخ 23 سبتمبر 2009 .
  15. "أداة توزيع بسيطة لـ CherryPy تستخدم المسارات" . مؤرشفة من الأصل بتاريخ 14 يناير 2016. تم الاطلاع عليها بتاريخ 27 سبتمبر 2009 .
  16. يستخدم TurboGears 2.x مكتبة CherryPy كخادم ومكتبة SQLAlchemy كإطار عمل ORM افتراضي.
  17. يستخدم TurboGears 1.x مكتبة CherryPy كخادم و SQLObject كـ ORM. مؤرشف بتاريخ 22 سبتمبر 2009 في Wayback Machine
  18. ديجافو، مؤرشف بتاريخ 17 مايو 2009 في أرشيف الإنترنت
  19. ماكو
  20. "أداة CherryPy بسيطة لإنشاء قوالب Mako" . مؤرشفة من الأصل بتاريخ 2016-03-03 . تم الاطلاع عليها بتاريخ 2009-09-21 .
  21. "CherryPy – Genshi" . تم الاطلاع عليه بتاريخ 26-09-2009 .
  22. "Genshi - CherryPy Tools - Trac" . مؤرشف من الأصل بتاريخ 27-02-2012 . تم الاطلاع عليه بتاريخ 26-09-2009 .
  23. "أداة CherryPy أساسية لاستخدام قوالب Jinja" . مؤرشفة من الأصل بتاريخ 2015-09-05 . تم الاطلاع عليها بتاريخ 2009-09-23 .
  24. يستخدم TurboGears 1.x مكتبة CherryPy كخادم ومكتبة Kid كواجهة أمامية. مؤرشف بتاريخ 22 سبتمبر 2009 في أرشيف الإنترنت (Wayback Machine).
  25. صفحة ويكي CherryPy حول اختيار لغة القوالب. مؤرشفة بتاريخ 10 فبراير 2010 في أرشيف الإنترنت (Wayback Machine).
  26. "CherryPy - قاعدة معارف Splunk" . مؤرشف من الأصل بتاريخ 17-11-2015 . تم الاطلاع عليه بتاريخ 24-03-2015 .