سؤال

أنا أكتب الآن بعض التعليمات البرمجية التي تم تنفيذها (في Python باستخدام Gevent) وأستخدم Nginx كخادم ويب وأشعر كلاهما رائع. قيل لي إن هناك تبادلًا للأحداث ولكن لم أتمكن من رؤيته. هل يمكن لأي شخص إلقاء بعض الضوء؟

جوامع

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

المحلول

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

ومع ذلك ، إذا كان السيناريو أعلاه غير مرجح (أي أن جميع العملاء سيطلبون نفس الموارد) ، فإن الحدث يحركهم هو الطريق للذهاب.

نصائح أخرى

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

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