Retry on http502 error during OWSlib request
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 40/100
Piste de recherche
Commencez par GeoHealthCheck/probe.py et GeoHealthCheck/util.py, en particulier create_requests_retry_session(), puis comparez les points d’entrée get_metadata dans GeoHealthCheck/plugins/probe/wfs.py, wms.py et les autres probes. Vérifiez comment la requête WebFeatureService() de OWSlib est effectuée et déterminez le comportement de retry nécessaire pour les réponses HTTP 502. Le travail est terminé lorsque les requêtes de métadonnées concernées sont réessayées de manière fiable sans perturber les erreurs normales.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
This issue is related to issue #366.
Is your feature request related to a problem? Please describe.
During a stress test of GHC (lots of resources with high frequency), I am getting mysterious http502 errors during WebFeatureService request in the get_metadata function inside wfs.py, wms.py, etc. These errors can be avoided by retrying requests.
Describe the solution you'd like
Currently, in probe.py there is already something in place for this using the create_requests_retry_session() function in util.py. The same principle could be applied to the request that is done in get_metadata functions of each probe (wfs.py, wms.py, etc.).
wfs.py
This request however uses the WebFeatureService() function from OWSlib, so the best solution in my opinion would be to use the create_requests_retry_session() in OWSlib. Maybe other OWSlib users have also seen this http502 error? This fix might improve OWSlib for other users as well.
Describe alternatives you've considered
An alternative is a simple loop with an exception clause which retries the WebFeatureService() request up to 3 times:
def get_metadata(self, resource, version='1.1.0', retries=3):
"""
Get metadata, specific per Resource type.
:param resource:
:param version:
:return: Metadata object
request_headers = self.get_request_headers()
"""
for i in range(retries):
try:
return WebFeatureService(
resource.url,
version=version,
headers=request_headers)
except:
continue
raise Exception(f'Get Metadata Request Exceeded {retries} Retries')
- Langage dominant
- Python
- Étoiles
- 92
- Forks
- 75
- Merge moyen
- 17 h 33 min
- PR mergées (30 j)
- 1
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de geopython/GeoHealthCheck
-
Data importOuvertequestion
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
geopython/GeoHealthCheck#522 · 1 commentaire ·
-
FTP ProbeOuverteenhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
geopython/GeoHealthCheck#520 ·
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
geopython/GeoHealthCheck#517 ·
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
geopython/GeoHealthCheck#483 · 1 commentaire ·
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
geopython/GeoHealthCheck#472 ·
Toutes les issues de geopython/GeoHealthCheck
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
PedestrianDynamics/pyFDS-Evac#343 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
theskumar/python-dotenv#708 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 2 jours
-
Docs Timedelta
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
pandas-dev/pandas#69919 ·
Les mainteneurs répondent en général sous 1 jour
-
API documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
zephyrproject-rtos/west#1009 · 2 commentaires ·
Les mainteneurs répondent en général sous 3 jours