سؤال

أنا أستخدم Twisted لتنفيذ عميل وخادم. لقد قمت بإعداد RPC بين العميل والخادم. لذلك على العميل أفعل protocol.REQUEST_UPDATE_STATS(stats), الذي يترجم إلى إرسال رسالة مع transport.write على نقل العميل الذي هو بعض النسخة المشفرة من ["update_stats", stats]. عندما يتلقى الخادم هذه الرسالة ، dataReceived تسمى الوظيفة على بروتوكول الخادم ، ويفككها ، وتستدعي وظيفة بناءً على الرسالة ، مثل CMD_UPDATE_STATS(stats) في هذه الحالة.

إذا ، على العميل ، أفعل شيئًا مثل:

protocol.REQUEST_UPDATE_STATS("stats1")
protocol.REQUEST_UPDATE_STATS("stats2")

... هل أنا مضمون أن "stats1" تصل الرسالة قبل "stats2" رسالة على الخادم؟

تحديث: تم تحريره لمزيد من الوضوح. ولكن الآن يبدو الجواب واضحًا - بأي حال من الأحوال.

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

المحلول

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

لكن نعم ، بشكل عام ، يمكنك الاعتماد عليها يتم تسليمها بالترتيب طالما أنها مفصولة بفترة زمنية كبيرة نسبيًا (100 من MS عبر الإنترنت).

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