diff --git a/moondb.py b/moondb.py index ec904f2e173f8fb118a4bc52793d2018f0379946..a1b7aff7d32598e6dc4aec9e903bea80958faa37 100755 --- a/moondb.py +++ b/moondb.py @@ -8,6 +8,9 @@ import requests import json import urllib.parse +import urllib3,socket +import logging + from collections import namedtuple class Mission: @@ -102,14 +105,25 @@ def _check_resp(resp): pass def _get_resp(path): - resp = requests.get(_url( path )) + try: + resp = requests.get(_url( path ), timeout=1) + except requests.exceptions.ReadTimeout: # urllib3.exceptions.ReadTimeoutError: + print("no response in timeout time") + logging.warning('no response in timeout time') + sys.exit(0) + except requests.exceptions.ConnectTimeout: + print("no response in timeout time") + logging.warning('no response in timeout time') + sys.exit(0) _check_resp(resp) r = resp.json() # To be checked with Peng + count = r['count'] if 'results' in r: - return r['results'] + return count,r['results'] if 'result' in r: - return r['result'] + return count,r['result'] + def get_specimen(sc=None,mn=None,ln=None,sty=None,ste=None): ''' @@ -123,26 +137,26 @@ def get_specimen(sc=None,mn=None,ln=None,sty=None,ste=None): sp_list = [] if sc: for s in sc: - spec = _get_resp('/specimen/'+s) + count,spec = _get_resp('/specimen/'+s) sp_list.extend(spec) if mn: for n in mn: - spec = _get_resp('/specimenlist/mission/'+n) + count,spec = _get_resp('/specimenlist/mission/'+n) sp_list.extend(spec) if ln: for n in ln: - spec = _get_resp('/specimenlist/mission/'+n) + count,spec = _get_resp('/specimenlist/mission/'+n) sp_list.extend(spec) if sty: for st in sty: - spec = _get_resp('/specimenlist/mission/'+st) + count,spec = _get_resp('/specimenlist/mission/'+st) sp_list.extend(spec) if ste: for st in ste: - spec = _get_resp('/specimenlist/mission/'+st) + count,spec = _get_resp('/specimenlist/mission/'+st) sp_list.extend(spec) from collections import namedtuple @@ -180,7 +194,7 @@ def get_missions(): def get_specimentypes(): st_list = [] - st = _get_resp('/cv/specimentypes') + count,st = _get_resp('/cv/specimentypes') for s in st: stobj = SpecimenType(s['name']) st_list.append(stobj) @@ -188,7 +202,7 @@ def get_specimentypes(): def get_samplingtechniques(): st_list = [] - st = _get_resp('/cv/samplingtechniques') + count,st = _get_resp('/cv/samplingtechniques') for s in st: stobj = SamplingTechnique(s['name']) st_list.append(stobj) @@ -196,7 +210,7 @@ def get_samplingtechniques(): def get_analyzedmaterials(): st_list = [] - st = _get_resp('/cv/analyzedmaterials') + count,st = _get_resp('/cv/analyzedmaterials') for s in st: stobj = AnalyzedMaterial(s['name']) st_list.append(stobj) @@ -204,14 +218,14 @@ def get_analyzedmaterials(): def get_analytes(): analytes = [] - an = _get_resp('/cv/analyzedmaterials') + count,an = _get_resp('/cv/analyzedmaterials') for a in an: analytes.append( Analyte(m_item['name'] )) return analytes def get_analysismethods(): am_list = [] - am = _get_resp('/cv/analysismethods') + count,am = _get_resp('/cv/analysismethods') for a in am: aobj = AnalysisMethod(s['name']) am_list.append(aobj)