10
10
from wsgiref .simple_server import make_server
11
11
12
12
from . import core
13
-
14
- from .handlers .base import handler as default_handler
15
-
16
13
try :
17
14
from BaseHTTPServer import BaseHTTPRequestHandler
18
15
from BaseHTTPServer import HTTPServer
16
+ from urllib2 import build_opener , Request , HTTPHandler
19
17
from urllib import quote_plus
20
18
from urlparse import parse_qs , urlparse
21
19
except ImportError :
22
20
# Python 3
23
21
unicode = str
24
22
from http .server import BaseHTTPRequestHandler
25
23
from http .server import HTTPServer
24
+ from urllib .request import build_opener , Request , HTTPHandler
26
25
from urllib .parse import quote_plus , parse_qs , urlparse
27
26
28
27
@@ -119,7 +118,22 @@ def write_to_textfile(path, registry):
119
118
os .rename (tmppath , path )
120
119
121
120
122
- def push_to_gateway (gateway , job , registry , grouping_key = None , timeout = None , handler = None ):
121
+ def default_handler (url , method , timeout , headers , data ):
122
+ def handle ():
123
+ '''Default handler that implements HTTP/HTTPS connections.'''
124
+ request = Request (url , data = data )
125
+ request .get_method = lambda : method
126
+ for k , v in headers :
127
+ request .add_header (k , v )
128
+ resp = build_opener (HTTPHandler ).open (request , timeout = timeout )
129
+ if resp .code >= 400 :
130
+ raise IOError ("error talking to pushgateway: {0} {1}" .format (
131
+ resp .code , resp .msg ))
132
+
133
+ return handle
134
+
135
+
136
+ def push_to_gateway (gateway , job , registry , grouping_key = None , timeout = None , handler = default_handler ):
123
137
'''Push metrics to the given pushgateway.
124
138
125
139
`gateway` the url for your push gateway. Either of the form
@@ -161,7 +175,7 @@ def push_to_gateway(gateway, job, registry, grouping_key=None, timeout=None, han
161
175
_use_gateway ('PUT' , gateway , job , registry , grouping_key , timeout , handler )
162
176
163
177
164
- def pushadd_to_gateway (gateway , job , registry , grouping_key = None , timeout = None , handler = None ):
178
+ def pushadd_to_gateway (gateway , job , registry , grouping_key = None , timeout = None , handler = default_handler ):
165
179
'''PushAdd metrics to the given pushgateway.
166
180
167
181
`gateway` the url for your push gateway. Either of the form
@@ -185,7 +199,7 @@ def pushadd_to_gateway(gateway, job, registry, grouping_key=None, timeout=None,
185
199
_use_gateway ('POST' , gateway , job , registry , grouping_key , timeout , handler )
186
200
187
201
188
- def delete_from_gateway (gateway , job , grouping_key = None , timeout = None , handler = None ):
202
+ def delete_from_gateway (gateway , job , grouping_key = None , timeout = None , handler = default_handler ):
189
203
'''Delete metrics from the given pushgateway.
190
204
191
205
`gateway` the url for your push gate
10000
way. Either of the form
@@ -224,8 +238,6 @@ def _use_gateway(method, gateway, job, registry, grouping_key, timeout, handler)
224
238
for k , v in sorted (grouping_key .items ())])
225
239
226
240
headers = [('Content-Type' , CONTENT_TYPE_LATEST )]
227
- if handler is None :
228
- handler = default_handler
229
241
handler (url = url , method = method , timeout = timeout ,
230
242
headers = headers , data = data )()
231
243
0 commit comments