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