Mercurial > kallithea
changeset 3489:d997a314d18a beta
moved time measure of request to separate middleware for better results (the last one in stack)
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 06 Mar 2013 18:12:09 +0100 |
parents | 1b4fc33931d7 |
children | c0ac34b8eb07 |
files | rhodecode/config/middleware.py rhodecode/lib/base.py rhodecode/lib/middleware/wrapper.py |
diffstat | 3 files changed, 49 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/config/middleware.py Wed Mar 06 16:31:22 2013 +0100 +++ b/rhodecode/config/middleware.py Wed Mar 06 18:12:09 2013 +0100 @@ -15,6 +15,7 @@ from rhodecode.lib.middleware.simplegit import SimpleGit from rhodecode.lib.middleware.https_fixup import HttpsFixup from rhodecode.config.environment import load_environment +from rhodecode.lib.middleware.wrapper import RequestWrapper def make_app(global_conf, full_stack=True, static_files=True, **app_conf): @@ -67,7 +68,7 @@ # need any pylons stack middleware in them app = SimpleHg(app, config) app = SimpleGit(app, config) - + app = RequestWrapper(app, config) # Display error documents for 401, 403, 404 status codes (and # 500 when debug is disabled) if asbool(config['debug']):
--- a/rhodecode/lib/base.py Wed Mar 06 16:31:22 2013 +0100 +++ b/rhodecode/lib/base.py Wed Mar 06 18:12:09 2013 +0100 @@ -279,7 +279,6 @@ # WSGIController.__call__ dispatches to the Controller method # the request is routed to. This routing information is # available in environ['pylons.routes_dict'] - start = time.time() try: self.ip_addr = _get_ip_addr(environ) # make sure that we update permissions each time we call controller @@ -300,10 +299,6 @@ ) return WSGIController.__call__(self, environ, start_response) finally: - log.info('IP: %s Request to %s time: %.3fs' % ( - _get_ip_addr(environ), - safe_unicode(_get_access_path(environ)), time.time() - start) - ) meta.Session.remove()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/lib/middleware/wrapper.py Wed Mar 06 18:12:09 2013 +0100 @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +""" + rhodecode.lib.middleware.wrapper + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + request time mesuring app + + :created_on: May 23, 2013 + :author: marcink + :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> + :license: GPLv3, see COPYING for more details. +""" +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +import time +import logging +from rhodecode.lib.base import _get_ip_addr, _get_access_path +from rhodecode.lib.utils2 import safe_unicode + + +class RequestWrapper(object): + + def __init__(self, app, config): + self.application = app + self.config = config + + def __call__(self, environ, start_response): + start = time.time() + try: + return self.application(environ, start_response) + finally: + log = logging.getLogger('rhodecode.' + self.__class__.__name__) + log.info('IP: %s Request to %s time: %.3fs' % ( + _get_ip_addr(environ), + safe_unicode(_get_access_path(environ)), time.time() - start) + ) +