امنح طلب وكيل Twisted مهلة لجسمه
اجمع بين مهلة الاتصال في نقطة نهاية الوكيل ومهلة Deferred تغطي أيضًا قراءة جسم استجابة صغير.
يمكن أن يتصل ProxyAgent بسرعة ثم ينتظر جسم الاستجابة إلى ما لا نهاية. ومهلة الاتصال في نقطة نهاية الوكيل لا تصف ذلك الانتظار اللاحق.
اضبط حدًا للاتصال على نقطة النهاية عند بناء الوكيل. في طلب HTTP العام أدناه، يمكن لمرشح غير موثّق من قائمة وكلاء HTTP أن يحل محل العنوان إذا كان يُسمح بالوسطاء العامين:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
بالنسبة لاستجابة صغيرة تنوي جمعها في الذاكرة، أدرج قراءة الجسم في سلسلة Deferred قبل إضافة المهلة:
from twisted.web.client import readBody
d = agent.request(b'GET', b'http://example.com/')
d.addCallback(readBody)
d.addTimeout(10, reactor)
d.addCallback(lambda body: print(len(body)))
d.addErrback(lambda failure: print(failure.getErrorMessage()))
تفترض القطعة أن التطبيق لديه بالفعل الـ reactor والوكيل المُهيأ. يعيد Deferred الخاص بطلب ProxyAgent كائن استجابة؛ ويعيد readBody الـ Deferred الخاص بالجسم. وإرجاعه من دالة الاستدعاء يجعل السلسلة تنتظر تلك العملية أيضًا.
الموضع مهم. يطبّق Twisted الدالة addTimeout على العمل الذي تمثله دوال الاستدعاء المثبتة قبله. وإضافة قارئ للجسم بعد ذلك تصف حدًا مختلفًا. في هذا الترتيب يبدأ المؤقت عند استدعاء addTimeout ويغطي الطلب المعلّق وعمل الجسم في تلك السلسلة.
استخدم مستهلكًا متدفقًا للأجسام الكبيرة أو غير المحدودة، ومثّل اكتماله بالطريقة نفسها. فمهلة جانب العميل تحدّ من مدة انتظار تطبيقك؛ وهي لا تعيد تهيئة مهلة الاتصال الصاعدة الخاصة بالوكيل نفسه.