سؤال

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

نحن نفكر في نهج مختلط ربما. ربما احتفظ بجزء خادم XMLRPC وإدارة العمليات في ملتوية وتنفيذ الأشياء الأخرى في التعليمات البرمجية التي تبدو على الأقل متزامنة إلى حد ما بينما لا تكون على هذا النحو. ثم مرة أخرى ، أحب صريحًا على الضمني ، لذا يجب أن أفكر في هذا أكثر قليلاً. على أي حال على Greenlets - ما مدى نجاح هذه الأشياء؟ لذلك ، هناك بلا مكدسة وكما ترون من الصورة الرمزية في Gallentean ، فأنا أدرك جيدًا النجاح الهائل في استخدامه في لعبة Eve الرائدة على الإنترنت في CCP. ماذا عن eashlet أو gevent؟ حسنا الآن فقط egronlet يعمل مع Twisted. ومع ذلك ، يدعي Gevent أنه أسرع لأنه ليس تطبيق Python الخالص ولكنه يعتمد على Libevent بدلاً من ذلك. كما تدعي أن لديها عدد أقل من الخصوصيات والعيوب. جيفنت يتم الحفاظ عليه من قبل رجل واحد بقدر ما أستطيع أن أقول. هذا يجعلني حريصًا إلى حد ما ولكن جميع المشاريع الرائعة تبدأ بهذه الطريقة ... ثم هناك Pypy - لم أنتهي حتى من القراءة عن ذلك حتى الآن - رأيته في هذا الموضوع: عيوب مكدسة.

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

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

هل كانت مفيدة؟

المحلول

قد ترغب في التحقق من:

لا يمكن مقارنتها في Evallet و Gevent مع Scaredless ، لأن السفن بدون تكديس مع مكتبة قياسية ليست على دراية بالمغارات. هناك تطبيقات مقبس لتكديس ولكن لا يوجد شيء شامل مثل gevent.monkey. لا يستخدم CCP عارية عارية بدون تكديس ، ولديه شيء يسمى I/O بدون تكديس وهو AFAIK هو Windows فقط ولم يكن مفتوحًا أبدًا (؟).

يمكن إجراء كل من Eventlet و Gevent على الجري على مكدسة بدلاً من Greenlet. في مرحلة ما حاولنا حتى القيام بذلك ك مشروع GSOC ولكن لم يجد طالب.

نصائح أخرى

الإجابة على جزء من سؤالك - إذا نظرت إلى http://speed.pypy.org سترى ذلك باستخدام Twisted فوق Pypy مايو يعطيك بعض السرعات. هذا يعتمد بالطبع على عبء العمل الخاص بك ، ولكن ربما يستحق التحقق.

هتافات،
فيجال

لقد قمت ببناء تطبيق ويب في الوقت الفعلي قليلاً أعلى Evallet و repoze.bfg (لقد تخليت عن Django منذ فترة طويلة). لقد وجدت أن ترقيع eventlet و monkey سهلة كما يقول تيد.

جيفنت ليس بيثون نقي ، ويعتمد بشكل صارم على cpython. من أطر الويب التي ذكرتها eventlet (OpenStack) و إعصار (FriendsFeed ، Quora) لديه أكبر نشر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top