From b084a7762f00f110f2b73158a66b577ec01a9cfd Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Wed, 9 Aug 2017 17:48:43 +0000 Subject: [PATCH] Use urllib3 retry mechanism in the packager alias script. --- .../files/owner-email-from-pagure.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/roles/packager_alias/files/owner-email-from-pagure.py b/roles/packager_alias/files/owner-email-from-pagure.py index 98676e1227..3ef5722801 100644 --- a/roles/packager_alias/files/owner-email-from-pagure.py +++ b/roles/packager_alias/files/owner-email-from-pagure.py @@ -8,6 +8,25 @@ Its goal is to generate all the -owner email aliases we provide import requests +from requests.adapters import HTTPAdapter +from requests.packages.urllib3.util.retry import Retry + + +def retry_session(): + session = requests.Session() + retry = Retry( + total=5, + read=5, + connect=5, + backoff_factor=0.3, + status_forcelist=(500, 502, 504), + ) + adapter = HTTPAdapter(max_retries=retry) + session.mount('http://', adapter) + session.mount('https://', adapter) + return session + + pagure_url = 'https://src.fedoraproject.org/' pagure_group_url = pagure_url + '/api/0/group/{group}' project_to_email = {} @@ -15,8 +34,9 @@ project_to_email = {} def get_pagure_projects(): pagure_projects_url = pagure_url + '/api/0/projects?page=1&per_page=100' + session = retry_session() while pagure_projects_url: - response = requests.get(pagure_projects_url) + response = session.get(pagure_projects_url) data = response.json() for project in data['projects']: yield project @@ -24,6 +44,7 @@ def get_pagure_projects(): pagure_projects_url = data['pagination']['next'] +session = retry_session() for project in get_pagure_projects(): users = set(project['access_users']['owner']) | \ set(project['access_users']['admin']) | \ @@ -34,7 +55,7 @@ for project in get_pagure_projects(): groups.add(group) for group in groups: - group_members = requests.get( + group_members = session.get( pagure_group_url.format(group=group)).json()['members'] users = users | set(group_members)