From a70841cb971bf681ae1215ba4a6ed372833e0617 Mon Sep 17 00:00:00 2001 From: Benoit Favre <benoit.favre@lis-lab.fr> Date: Fri, 12 Jun 2020 13:59:46 +0200 Subject: [PATCH] fix problems with pubmed servers disconnecting --- bibliovid_add_abstract.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/bibliovid_add_abstract.py b/bibliovid_add_abstract.py index df59b60..c418f23 100644 --- a/bibliovid_add_abstract.py +++ b/bibliovid_add_abstract.py @@ -5,6 +5,8 @@ import sys, json, re, collections from pymed import PubMed from datetime import datetime, date +import requests +import time pubmed = PubMed(tool="https://covid19.lis-lab.fr", email="benoit.favre@univ-amu.fr") @@ -32,16 +34,22 @@ for article in articles['results']: found = False for query in ['(%s[Title] AND (%s[Author])' % (preprocess(title), preprocess(authors)), '%s[Title]' % preprocess(title), preprocess(title)]: - results = pubmed.query(query, max_results=30) - for result in results: - entry = result.toDict() - if normalize(title) == normalize(entry['title']): - found = True - for field in ['pubmed_id', 'doi', 'abstract']: - if field in entry: - article[field] = entry[field] - stats[field] += 1 + for retries in range(10): + try: + results = pubmed.query(query, max_results=30) + for result in results: + entry = result.toDict() + if normalize(title) == normalize(entry['title']): + found = True + for field in ['pubmed_id', 'doi', 'abstract']: + if field in entry: + article[field] = entry[field] + stats[field] += 1 + break break + except requests.exceptions.HTTPError as e: + print(e, file=sys.stderr) + time.sleep(5) if found: break if not found: -- GitLab