request-wrapper: add request counters

This commit is contained in:
Marcin Kuzminski 2019-07-29 14:43:00 +02:00
parent 5b8d619a70
commit c1b5317c1e
3 changed files with 35 additions and 4 deletions

View file

@ -317,6 +317,10 @@ def includeme(config):
'rhodecode.lib.partial_renderer.get_partial_renderer',
'get_partial_renderer')
config.add_request_method(
'rhodecode.lib.request_counter.get_request_counter',
'request_count')
# Set the authorization policy.
authz_policy = ACLAuthorizationPolicy()
config.set_authorization_policy(authz_policy)

View file

@ -18,11 +18,10 @@
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import gc
import time
import logging
from rhodecode.lib.base import get_ip_addr, get_access_path, get_user_agent
from rhodecode.lib.utils2 import safe_str
@ -44,9 +43,10 @@ class RequestWrapperTween(object):
finally:
end = time.time()
total = end - start
count = request.request_count()
log.info(
'IP: %s %s Request to %s time: %.4fs [%s]',
get_ip_addr(request.environ), request.environ.get('REQUEST_METHOD'),
'Req[%4s] IP: %s %s Request to %s time: %.4fs [%s]',
count, get_ip_addr(request.environ), request.environ.get('REQUEST_METHOD'),
safe_str(get_access_path(request.environ)), total,
get_user_agent(request. environ)
)

View file

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2017-2019 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# 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 Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
counter = 0
def get_request_counter(request):
global counter
counter += 1
return counter