##// END OF EJS Templates
vcsserver: http main added time measuring tween for debugging.
marcink -
r154:1e471c21 default
parent child Browse files
Show More
@@ -0,0 +1,60 b''
1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software Foundation,
16 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
18
19
20 import time
21 import logging
22
23
24 from vcsserver.utils import safe_str
25
26
27 log = logging.getLogger(__name__)
28
29
30 def get_access_path(request):
31 environ = request.environ
32 return environ.get('PATH_INFO')
33
34
35 class RequestWrapperTween(object):
36 def __init__(self, handler, registry):
37 self.handler = handler
38 self.registry = registry
39
40 # one-time configuration code goes here
41
42 def __call__(self, request):
43 start = time.time()
44 try:
45 response = self.handler(request)
46 finally:
47 end = time.time()
48
49 log.info('IP: %s Request to %s time: %.3fs' % (
50 '127.0.0.1',
51 safe_str(get_access_path(request)), end - start)
52 )
53
54 return response
55
56
57 def includeme(config):
58 config.add_tween(
59 'vcsserver.tweens.RequestWrapperTween',
60 )
@@ -216,6 +216,10 b' class HTTPApplication(object):'
216 self.config.add_view(
216 self.config.add_view(
217 self.general_error_handler, context=Exception)
217 self.general_error_handler, context=Exception)
218
218
219 self.config.add_tween(
220 'vcsserver.tweens.RequestWrapperTween',
221 )
222
219 def wsgi_app(self):
223 def wsgi_app(self):
220 return self.config.make_wsgi_app()
224 return self.config.make_wsgi_app()
221
225
@@ -234,6 +238,7 b' class HTTPApplication(object):'
234 pass
238 pass
235 args.insert(0, wire)
239 args.insert(0, wire)
236
240
241 log.debug('method called:%s with kwargs:%s', method, kwargs)
237 try:
242 try:
238 resp = getattr(remote, method)(*args, **kwargs)
243 resp = getattr(remote, method)(*args, **kwargs)
239 except Exception as e:
244 except Exception as e:
General Comments 0
You need to be logged in to leave comments. Login now