From 1fc063ff80573967e4a4c8fe2824abb7d72c804f Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Tue, 30 Jun 2020 19:46:32 -0400 Subject: [PATCH] Fixing middleware for new format. --- apps/profile/middleware.py | 67 ++++++++++++++++++----- newsblur/settings.py | 2 +- utils/mongo_raw_log_middleware.py | 3 +- utils/redis_raw_log_middleware.py | 14 ++++- utils/request_introspection_middleware.py | 2 + 5 files changed, 69 insertions(+), 19 deletions(-) diff --git a/apps/profile/middleware.py b/apps/profile/middleware.py index 03799535d..87c3c5abc 100644 --- a/apps/profile/middleware.py +++ b/apps/profile/middleware.py @@ -13,7 +13,7 @@ from utils import json_functions as json class LastSeenMiddleware(object): def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def process_response(self, request, response): if ((request.path == '/' or @@ -41,16 +41,23 @@ class LastSeenMiddleware(object): return response def __call__(self, request): - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) return response class DBProfilerMiddleware: def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def process_request(self, request): setattr(request, 'activated_segments', []) + print(" ---> Setting activated_segments", request.activated_segments) if ((request.path.startswith('/reader/feed') or request.path.startswith('/reader/river')) and random.random() < .01): @@ -106,13 +113,19 @@ class DBProfilerMiddleware: pipe.execute() def __call__(self, request): - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) return response class SQLLogToConsoleMiddleware: def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def activated(self, request): return (settings.DEBUG_QUERIES or @@ -158,7 +171,13 @@ class SQLLogToConsoleMiddleware: self.process_response(profiler, None) def __call__(self, request): - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) return response @@ -268,7 +287,7 @@ SIMPSONS_QUOTES = [ class SimpsonsMiddleware: def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def process_response(self, request, response): quote = random.choice(SIMPSONS_QUOTES) @@ -278,14 +297,20 @@ class SimpsonsMiddleware: return response def __call__(self, request): - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) return response class ServerHostnameMiddleware: def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def process_response(self, request, response): response["X-gunicorn-server"] = settings.SERVER_NAME @@ -293,7 +318,13 @@ class ServerHostnameMiddleware: return response def __call__(self, request): - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) return response @@ -306,8 +337,9 @@ class TimingMiddleware: setattr(request, 'start_time', time.time()) def __call__(self, request): - self.process_request(request) - response = self.get_response(request) + response = self.process_request(request) + if not response: + response = self.get_response(request) return response BANNED_USER_AGENTS = ( @@ -320,7 +352,7 @@ BANNED_USERNAMES = ( class UserAgentBanMiddleware: def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def process_request(self, request): user_agent = request.environ.get('HTTP_USER_AGENT', 'missing').lower() @@ -351,8 +383,13 @@ class UserAgentBanMiddleware: return HttpResponse(json.encode(data), status=403, mimetype='text/json') def __call__(self, request): - - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) return response diff --git a/newsblur/settings.py b/newsblur/settings.py index 7715a3c4b..2f1623672 100644 --- a/newsblur/settings.py +++ b/newsblur/settings.py @@ -747,7 +747,7 @@ JAMMIT = jammit.JammitAssets(ROOT_DIR) if DEBUG: MIDDLEWARE += ('utils.request_introspection_middleware.DumpRequestMiddleware',) - MIDDLEWARE += ('utils.exception_middleware.ConsoleExceptionMiddleware',) + # MIDDLEWARE += ('utils.exception_middleware.ConsoleExceptionMiddleware',) # ======= # = AWS = diff --git a/utils/mongo_raw_log_middleware.py b/utils/mongo_raw_log_middleware.py index b6266d8ad..4e61833c3 100644 --- a/utils/mongo_raw_log_middleware.py +++ b/utils/mongo_raw_log_middleware.py @@ -12,7 +12,7 @@ from bson.errors import InvalidBSON class MongoDumpMiddleware(object): def __init__(self, get_response): - self.get_response = get_response + self.get_response = get_response def activated(self, request): return (settings.DEBUG_QUERIES or @@ -80,6 +80,7 @@ class MongoDumpMiddleware(object): def __call__(self, request): response = self.get_response(request) + response = self.process_response(request, response) return response diff --git a/utils/redis_raw_log_middleware.py b/utils/redis_raw_log_middleware.py index 81333f5f5..93b253176 100644 --- a/utils/redis_raw_log_middleware.py +++ b/utils/redis_raw_log_middleware.py @@ -13,6 +13,7 @@ class RedisDumpMiddleware(object): return (settings.DEBUG_QUERIES or (hasattr(request, 'activated_segments') and 'db_profiler' in request.activated_segments)) + def process_view(self, request, callback, callback_args, callback_kwargs): if not self.activated(request): return if not getattr(Connection, '_logging', False): @@ -20,6 +21,7 @@ class RedisDumpMiddleware(object): setattr(Connection, '_logging', True) Connection.pack_command = \ self._instrument(Connection.pack_command) + def process_celery(self, profiler): if not self.activated(profiler): return if not getattr(Connection, '_logging', False): @@ -27,6 +29,7 @@ class RedisDumpMiddleware(object): setattr(Connection, '_logging', True) Connection.pack_command = \ self._instrument(Connection.pack_command) + def process_response(self, request, response): # if settings.DEBUG and hasattr(self, 'orig_pack_command'): # # remove instrumentation from redis @@ -34,6 +37,7 @@ class RedisDumpMiddleware(object): # Connection.pack_command = \ # self.orig_pack_command return response + def _instrument(self, original_method): def instrumented_method(*args, **kwargs): message = self.process_message(*args, **kwargs) @@ -63,6 +67,12 @@ class RedisDumpMiddleware(object): return { 'query': ' '.join(query) } def __call__(self, request): - response = self.get_response(request) + response = None + if hasattr(self, 'process_request'): + response = self.process_request(request) + if not response: + response = self.get_response(request) + if hasattr(self, 'process_response'): + response = self.process_response(request, response) - return response \ No newline at end of file + return response diff --git a/utils/request_introspection_middleware.py b/utils/request_introspection_middleware.py index 74cb8beb5..b56752288 100644 --- a/utils/request_introspection_middleware.py +++ b/utils/request_introspection_middleware.py @@ -13,6 +13,8 @@ class DumpRequestMiddleware: self.get_response = get_response def __call__(self, request): + + self.process_request(request) response = self.get_response(request) return response