Lorsqu'ils utilisent Net::HTTP
comme adaptateur, les utilisateurs sont surpris par la stratégie de nouvelle tentative fournie par Net::HTTP
. Cela amène à différents "problèmes" (par exemple #612 et #771).
Nous ne pouvons pas faire grand-chose pour Ruby <= 2.4, cependant Ruby 2.5 fournit une nouvelle configuration max_retries
pour Net::HTTP
donc Faraday devrait la définir automatiquement lorsqu'elle sera disponible.
Voir les numéros 612 et 771.
J'ai étudié ce problème. Une approche mentionnée dans #771 consiste à définir la valeur par défaut sur 0, mais à la modifier en fonction du nombre de tentatives configurées. Nous devrions informer le middleware Retry de l'adaptateur sous-jacent (car certains adaptateurs pourraient ne pas le prendre en charge) et appliquer cette logique sous condition dans le env
. L'adaptateur devrait également connaître le nombre de tentatives.
Comme alternative à cette approche, nous pouvons la configurer pour qu'elle ne fasse pas de nouvelles tentatives, en maintenant la logique de nouvelle tentative confinée au middleware Retry. Quel que soit le résultat, je serais plus qu'heureux de le prendre @iMacTia .
Je pensais vraiment à la deuxième option.
Nous avons déjà le middleware Retry qui peut s'occuper de réessayer les requêtes ayant échoué.
Les adaptateurs (dans ce cas, Net::HTTP) ne doivent jamais relancer les requêtes par eux-mêmes.
Tout ce que nous devons faire dans ce cas est de dire à Net::HTTP adapter max_retries
à 0, si cette propriété est disponible, bien sûr
@iMacTia - Je ne pourrais pas être plus d'accord. Dans ce cas, je reprendrai ça.