عند استخدام Net::HTTP
كمحول ، يفاجأ المستخدمون باستراتيجية إعادة المحاولة المقدمة من Net::HTTP
. يؤدي هذا إلى ظهور "مشكلات" مختلفة (مثل # 612 و # 771).
ليس هناك الكثير الذي يمكننا القيام به لروبي <= 2.4 ، ولكن روبي 2.5 يوفر تكوينًا جديدًا max_retries
لـ Net::HTTP
لذا يجب على Faraday ضبط ذلك تلقائيًا عند توفره.
راجع العدد 612 ورقم 771.
لقد كنت أبحث في هذه القضية. أحد الأساليب المذكورة في # 771 هو تعيين الإعداد الافتراضي على 0 ، ولكن قم بتغييره بناءً على مقدار عمليات إعادة المحاولة التي تم تكوينها. يجب أن نجعل البرنامج الوسيط Retry على دراية بالمحول الأساسي (لأن بعض المحولات قد لا تدعم هذا) ، ونطبق هذا المنطق بشكل مشروط في env
. سيتعين على المحول أيضًا معرفة مقدار عمليات إعادة المحاولة.
كبديل للنهج المذكور ، يمكننا تعيينه على عدم القيام بإعادة المحاولة ، بدلاً من الاحتفاظ بمنطق إعادة المحاولة محصورًا في البرامج الوسيطة Retry. مهما كانت النتيجة ، سأكون أكثر من سعيد لاختيار هذا iMacTia .
كنت أفكر بالتأكيد في الخيار الثاني.
لدينا بالفعل البرامج الوسيطة Retry التي يمكنها الاهتمام بإعادة محاولة الطلبات الفاشلة.
يجب ألا تعيد المحولات (في هذه الحالة Net :: HTTP) محاولة إعادة الطلبات من تلقاء نفسها.
كل ما نحتاج إلى القيام به في هذه الحالة هو إخبار محول Net :: HTTP بتعيين max_retries
إلى 0 ، إذا كانت هذه الخاصية متاحة ، بالطبع
iMacTia - لم أستطع الموافقة أكثر. في هذه الحالة ، سألتقط هذا.