1010from wsgiref .simple_server import make_server
1111
1212from . import core
13-
14- from .handlers .base import handler as default_handler
15-
1613try :
1714 from BaseHTTPServer import BaseHTTPRequestHandler
1815 from BaseHTTPServer import HTTPServer
16+ from urllib2 import build_opener , Request , HTTPHandler
1917 from urllib import quote_plus
2018 from urlparse import parse_qs , urlparse
2119except ImportError :
2220 # Python 3
2321 unicode = str
2422 from http .server import BaseHTTPRequestHandler
2523 from http .server import HTTPServer
24+ from urllib .request import build_opener , Request , HTTPHandler
2625 from urllib .parse import quote_plus , parse_qs , urlparse
2726
2827
@@ -119,7 +118,22 @@ def write_to_textfile(path, registry):
119118 os .rename (tmppath , path )
120119
121120
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 ):
123137 '''Push metrics to the given pushgateway.
124138
125139 `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
161175 _use_gateway ('PUT' , gateway , job , registry , grouping_key , timeout , handler )
162176
163177
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 ):
165179 '''PushAdd metrics to the given pushgateway.
166180
167181 `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,
185199 _use_gateway ('POST' , gateway , job , registry , grouping_key , timeout , handler )
186200
187201
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 ):
189203 '''Delete metrics from the given pushgateway.
190204
191205 `gateway` the url for your push gateway. Either of the form
@@ -224,8 +238,6 @@ def _use_gateway(method, gateway, job, registry, grouping_key, timeout, handler)
224238 for k , v in sorted (grouping_key .items ())])
225239
226240 headers = [('Content-Type' , CONTENT_TYPE_LATEST )]
227- if handler is None :
228- handler = default_handler
229241 handler (url = url , method = method , timeout = timeout ,
230242 headers = headers , data = data )()
231243
0 commit comments