Bonjour à tous,
Je développe actuellement une application web qui fait intervenir en bout de chaîne un webservice exposé en WSDL et que je consomme par PySimpleSOAP. Il est plus que fréquent que mon serveur utilisant PySimpleSOAP échoue avec un timeout lors d'opérations SOAP. Le webservice met effectivement périodiquement plusieurs dizaines de secondes à répondre, et mon client SOAP dit donc "merde, j'ai autre chose à faire". Néanmoins, il apparaît que le timeout n'a pas empêché les données d'être transmises au webservice.
J'ai donc plusieurs questions:
- existe-t-il, lors d'un timeout, au niveau des libs python (urllib, httplib2, pycurl) ou du protocol HTTP un moyen de savoir si le serveur à bien reçu les données mais qu'il met juste dix plombes à dire "ok" ? Je n'ai pas vraiment de moyen de déduire a posteriori la bonne réception de données sans faire intervenir plusieurs autres requêtes SOAP (pouvant toutes échouer) + un diff des données.
- quelles stratégies mettez-vous en place pour gérer gracieusement les timeouts ? Dois-je rallonger le délai pour donner plus de chances au webservice de me répondre ? Dois-je juste échouer et dire à l'utilisateur que sa demande a raté mais que peut-être la modification a été prise en compte?
Dans la mesure où mes accès en SOAP sont exécutés dans des processus séparés, cela ne me dérange pas de rallonger le timeout, encore faut-il que cela soit efficace et que je fasse patienter l'utilisateur gentillement. Quelles sont vos expériences?
Merci pour votre éclairage!
MangoBango
Partager