Development #36077
retenter la récuperation des données depuis wcs en cas de timeout
0%
Description
Au lieu de passer au formdef suivant lors de:
2019-09-12 15:42:40,010 INFO feed formdef inscription-enfant-restauration-scolaire-alae 2019-09-12 15:43:31,467 ERROR failed to retrieve formdef inscription-enfant-restauration-scolaire-alae, GET response is not 200: content=<html><body><h1>504 Gateway Time-out</h1> The server didn't respond in time. </body></html> status_code=504 url=https://traitement-demarches.arles.fr/api/forms/inscription-enfant-restauration-scolaire-alae/list?anonymise&full=on&offset=0&limit=1000&orig=bijoe-demarches.arles.fr&algo=sha256×tamp=2019-09-12T13%3A42%3A41Z&nonce=a863affadced3da87979fed6e5f5ade0&signature=veTwBXqYmyHkd4CEgvuMaXpIrOrRuq5dV0NUHrX5%2Bms%3D 2019-09-12 15:43:31,606 INFO feed formdef j-inscris-mon-enfant-a-l-ecole 2019-09-12 15:43:47,900 INFO feed formdef inscription-enfant-garderie-etude-ecole
on pourrait retenter la récupération du batch, une fois ou deux.
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 4 ans
Ca se passe dans wcs_olap/wcs_api.py :
try: response = requests.get(signed_url, verify=self.verify) except requests.RequestException as e: raise WcsApiError('GET request failed', url=signed_url, exception=e) else: if not response.ok: ...
Selon moi, on pourrait retenter le requests.get 3 fois si response.status_code est 502 (wcs coupé), 503 (maintenance) ou 504 (saturation) ; avec 5 secondes d'attente entre chaque tentative.
Mis à jour par Frédéric Péters il y a plus de 4 ans
Je ne suis pas trop pour l'idée de se promener sur la corde du timeout et se dire qu'à force on ne chutera pas; dans le ticket qui n'est pas lié il me semble avoir vu passé que la taille du batch de récupération avait été réduit, je préfère ça, et ça me va de diminuer partout.
Par ailleurs et plus compliqué sans doute, faire en sorte de rester sur les anciennes données si les nouvelles ne peuvent pas être récupérées.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Frédéric Péters a écrit :
Je ne suis pas trop pour l'idée de se promener sur la corde du timeout et se dire qu'à force on ne chutera pas; dans le ticket qui n'est pas lié il me semble avoir vu passé que la taille du batch de récupération avait été réduit, je préfère ça, et ça me va de diminuer partout.
Les timeout venaient au début des formulaires avec un historique trop long, depuis qu'on ne log plus les statuts qui bouclent sur eux même ça a bien amélioré les choses, mais des batchs de 1000 oui ça semble un peu gros ici (je n'ai pas d'idée du pourquoi). Tout à fait d'accord pour baisser ça à 100 uniformément.
Par ailleurs et plus compliqué sans doute, faire en sorte de rester sur les anciennes données si les nouvelles ne peuvent pas être récupérées.
Le plus simple dans ce cas c'est de ne pas intercepter les erreurs WcsApiError sur la récupération d'un formdef et de foirer tout l'import, dans ce cas le schéma temporaire ne sera pas renommé et les données existante seront conservées; tenter de conserver uniquement les données du formulaire concerné sera trop compliqué.
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Fichier 0001-misc-reduce-default-batch-size-to-500-items-36077.patch 0001-misc-reduce-default-batch-size-to-500-items-36077.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Tout à fait d'accord pour baisser ça à 100 uniformément.
Descendons progressivement ? Patch pour commencer en réduisant de 1000 à 500.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
Ok.
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 8e60ac10d1aa1ed6e44910ece0257ecd41eeb718 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Sep 15 10:24:59 2019 +0200 misc: reduce default batch size to 500 items (#36077)
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: reduce default batch size to 500 items (#36077)