Show More
@@ -0,0 +1,47 b'' | |||
|
1 | # -*- coding: utf-8 -*- | |
|
2 | """ | |
|
3 | rhodecode.lib.middleware.wrapper | |
|
4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
|
5 | ||
|
6 | request time mesuring app | |
|
7 | ||
|
8 | :created_on: May 23, 2013 | |
|
9 | :author: marcink | |
|
10 | :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> | |
|
11 | :license: GPLv3, see COPYING for more details. | |
|
12 | """ | |
|
13 | # This program is free software: you can redistribute it and/or modify | |
|
14 | # it under the terms of the GNU General Public License as published by | |
|
15 | # the Free Software Foundation, either version 3 of the License, or | |
|
16 | # (at your option) any later version. | |
|
17 | # | |
|
18 | # This program is distributed in the hope that it will be useful, | |
|
19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
21 | # GNU General Public License for more details. | |
|
22 | # | |
|
23 | # You should have received a copy of the GNU General Public License | |
|
24 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
|
25 | import time | |
|
26 | import logging | |
|
27 | from rhodecode.lib.base import _get_ip_addr, _get_access_path | |
|
28 | from rhodecode.lib.utils2 import safe_unicode | |
|
29 | ||
|
30 | ||
|
31 | class RequestWrapper(object): | |
|
32 | ||
|
33 | def __init__(self, app, config): | |
|
34 | self.application = app | |
|
35 | self.config = config | |
|
36 | ||
|
37 | def __call__(self, environ, start_response): | |
|
38 | start = time.time() | |
|
39 | try: | |
|
40 | return self.application(environ, start_response) | |
|
41 | finally: | |
|
42 | log = logging.getLogger('rhodecode.' + self.__class__.__name__) | |
|
43 | log.info('IP: %s Request to %s time: %.3fs' % ( | |
|
44 | _get_ip_addr(environ), | |
|
45 | safe_unicode(_get_access_path(environ)), time.time() - start) | |
|
46 | ) | |
|
47 |
@@ -15,6 +15,7 b' from rhodecode.lib.middleware.simplehg i' | |||
|
15 | 15 | from rhodecode.lib.middleware.simplegit import SimpleGit |
|
16 | 16 | from rhodecode.lib.middleware.https_fixup import HttpsFixup |
|
17 | 17 | from rhodecode.config.environment import load_environment |
|
18 | from rhodecode.lib.middleware.wrapper import RequestWrapper | |
|
18 | 19 | |
|
19 | 20 | |
|
20 | 21 | def make_app(global_conf, full_stack=True, static_files=True, **app_conf): |
@@ -67,7 +68,7 b' def make_app(global_conf, full_stack=Tru' | |||
|
67 | 68 | # need any pylons stack middleware in them |
|
68 | 69 | app = SimpleHg(app, config) |
|
69 | 70 | app = SimpleGit(app, config) |
|
70 | ||
|
71 | app = RequestWrapper(app, config) | |
|
71 | 72 | # Display error documents for 401, 403, 404 status codes (and |
|
72 | 73 | # 500 when debug is disabled) |
|
73 | 74 | if asbool(config['debug']): |
@@ -279,7 +279,6 b' class BaseController(WSGIController):' | |||
|
279 | 279 | # WSGIController.__call__ dispatches to the Controller method |
|
280 | 280 | # the request is routed to. This routing information is |
|
281 | 281 | # available in environ['pylons.routes_dict'] |
|
282 | start = time.time() | |
|
283 | 282 | try: |
|
284 | 283 | self.ip_addr = _get_ip_addr(environ) |
|
285 | 284 | # make sure that we update permissions each time we call controller |
@@ -300,10 +299,6 b' class BaseController(WSGIController):' | |||
|
300 | 299 | ) |
|
301 | 300 | return WSGIController.__call__(self, environ, start_response) |
|
302 | 301 | finally: |
|
303 | log.info('IP: %s Request to %s time: %.3fs' % ( | |
|
304 | _get_ip_addr(environ), | |
|
305 | safe_unicode(_get_access_path(environ)), time.time() - start) | |
|
306 | ) | |
|
307 | 302 | meta.Session.remove() |
|
308 | 303 | |
|
309 | 304 |
General Comments 0
You need to be logged in to leave comments.
Login now