الملتوية ReconnectingClientFactory - إعادة الاتصال التلقائي أو بشكل صريح استدعاء الموصل.ربط()?

StackOverflow https://stackoverflow.com//questions/20014776

سؤال

عند استخدام الملتوية ReconnectingClientFactory و فقدان الاتصال هل أنا بحاجة إلى دعوة الموصل.ربط() من ضمن clientConnectionLost طريقة أو هل يحدث هذا التلقائى?

قد يبدو الجواب واضحا لأنه بعد كل شيء ، ReconnectingClientFactory ولكن الملتوية الوثائق يقول شيئا هنا هذا جعلني أتساءل:

"قد يكون من المفيد دعوة الموصل.ربط() - وهذا سوف إعادة الاتصال."

صيغة استخدام مصطلح 'قد تكون مفيدة' يقودنا إلى السؤال منذ api دكتور الأساسية العميل المصنع يقول نفس الشيء.

ماكس الجواب الصحيح ولكن بعد إجراء المزيد من البحوث أعتقد أن 'مصحح' الإجابة على النحو التالي:

def clientConnectionLost(self, connector, reason):
    # do stuff here that is unique to your own requirements, then:
    ReconnectingClientFactory.clientConnectionLost(self, connector, reason)

هذا يسمح لك أن تفعل المتخصصة الأشياء المطلوبة من قبل التطبيق الخاص بك ومن ثم استدعاء في مصنع رمز للسماح الملتوية لرعاية الدعوة المحاولة() بالنسبة لك.

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

المحلول

القديم كان الجواب غير صحيحة كليا.بدلا من القيام بذلك:

def clientConnectionLost(self, connector, reason):
    # do stuff here that is unique to your own requirements, then:
    ReconnectingClientFactory.clientConnectionLost(self, connector, reason)

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

نصائح أخرى

داعيا ReconnectingClientFactory.clientConnectionLost(النفس ، الموصل ، السبب) هو الشيء الصحيح القيام به, كما:

  1. الشيكات 'النفس.continueTrying' قبل الاتصال الذاتي.إعادة المحاولة (وهو الرئيسية, كما أن الاتصال قد فقدت بسبب مكالمة 'stopTrying()'
  2. مجموعات النفس.موصل موصل مرت في.
  3. المكالمات الذاتي.إعادة المحاولة() (التي يرجع ذلك إلى عدم وجود مرت في موصل يستخدم النفس.مجموعة الموصل في #2).
  4. و إذا كان هناك تغييرات على ReconnectingClientFactory التنفيذ في المستقبل التي من شأنها أن تتطلب المزيد من الإجراءات في إعادة ربط المسار ، سيتم التعامل معها تلقائيا دون تغييرات في التعليمات البرمجية.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top