Skip to content

Commit 56a5dbb

Browse files
author
Antoine Barbare
committed
feat: add timeout to requests calls
1 parent 4bf84ad commit 56a5dbb

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

prometheus_http_client/prometheus/client.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,18 @@ def _golang_parsebool(string):
3333

3434
class Prometheus(object):
3535
def __init__(self, url=None, headers=None, verify_ssl=None,
36-
certs=None):
36+
certs=None, timeout=10):
3737
self.url = url or os.getenv('PROMETHEUS_URL', 'http://localhost:9090')
3838
if headers:
3939
self.headers = headers
4040
else:
4141
self.headers = os.getenv('PROMETHEUS_HEAD', None)
4242
if self.headers:
4343
self.headers = json.loads(self.headers)
44+
45+
if timeout:
46+
self.timeout = timeout
47+
4448
self.step_size = 257.142857143
4549

4650
if verify_ssl is not None:
@@ -57,7 +61,7 @@ def __init__(self, url=None, headers=None, verify_ssl=None,
5761

5862
self.certs = certs
5963

60-
if os.getenv('PROMETHEUS_CERT', None)
64+
if os.getenv('PROMETHEUS_CERT', None)
6165
and os.getenv('PROMETHEUS_KEY', None):
6266
self.certs = (os.getenv('PROMETHEUS_CERT', None),
6367
os.getenv('PROMETHEUS_KEY', None))
@@ -155,7 +159,7 @@ def _build_params(dic):
155159
# if the value is a tuple then the caller likes to give also the operator like !=, =~ and so on.
156160
# else the caller just likes label equals value filter
157161
if isinstance(v, tuple):
158-
s += '{}{}"{}", '.format(k,v[0],v[1])
162+
s += '{}{}"{}", '.format(k, v[0], v[1])
159163
else:
160164
s += '{}="{}", '.format(k, v)
161165
# remove last comma

prometheus_http_client/provider/__init__.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def _q(self, **kwargs):
4141
params={'query': kwargs.get('metric'), 'time': kwargs.get('time', time.time())},
4242
headers=self.headers,
4343
verify=self.verify_ssl,
44-
certs=self.certs).text
44+
certs=self.certs,
45+
timeout=self.timeout).text
4546

4647

4748
@check_params(['metric', 'start', 'end'])
@@ -55,15 +56,17 @@ def _qr(self, **kwargs):
5556
'step': kwargs.get('step', self.get_step(kwargs.get('start'), kwargs.get('end')))},
5657
headers=self.headers,
5758
verify=self.verify_ssl,
58-
certs=self.certs).text
59+
certs=self.certs,
60+
timeout=self.timeout).text
5961

6062

6163
def _t(self):
6264
return requests.get(
6365
url=self.url.rstrip('/') + '/api/v1/targets',
6466
headers=self.headers,
6567
verify=self.verify_ssl,
66-
certs=self.certs).text
68+
certs=self.certs,
69+
timeout=self.timeout).text
6770

6871

6972
def _s(self, matches):
@@ -78,7 +81,8 @@ def _s(self, matches):
7881
url=url,
7982
headers=self.headers,
8083
verify=self.verify_ssl,
81-
certs=self.certs).text
84+
certs=self.certs,
85+
timeout=self.timeout).text
8286

8387
def _r(self, **kwargs):
8488
""" type: alert|record
@@ -90,29 +94,33 @@ def _r(self, **kwargs):
9094
'type': kwargs.get('type')},
9195
headers=self.headers,
9296
verify=self.verify_ssl,
93-
certs=self.certs).text
97+
certs=self.certs,
98+
timeout=self.timeout).text
9499

95100
def _a(self):
96101
return requests.get(
97102
url=self.url.rstrip('/') + '/api/v1/alerts',
98103
headers=self.headers,
99104
verify=self.verify_ssl,
100-
certs=self.certs).text
105+
certs=self.certs,
106+
timeout=self.timeout).text
101107

102108
def _am(self):
103109
return requests.get(
104110
url=self.url.rstrip('/') + '/api/v1/alertmanagers',
105111
headers=self.headers,
106112
verify=self.verify_ssl,
107-
certs=self.certs).text
113+
certs=self.certs,
114+
timeout=self.timeout).text
108115

109116

110117
def _lv(self, label):
111118
return requests.get(
112119
url=self.url.rstrip('/') + '/api/v1/label/{}/values'.format(label),
113120
headers=self.headers,
114121
verify=self.verify_ssl,
115-
certs=self.certs).text
122+
certs=self.certs,
123+
timeout=self.timeout).text
116124

117125

118126
_dic = {
@@ -121,8 +129,8 @@ def _lv(self, label):
121129
'query_rang': _qr,
122130
'targets': _t,
123131
'series': _s,
124-
'rules':_r,
125-
'alerts':_a,
132+
'rules': _r,
133+
'alerts': _a,
126134
'alert_managers': _am,
127135
'label_values': _lv
128136
}

0 commit comments

Comments
 (0)