|
|
|
|
@ -14,10 +14,13 @@
|
|
|
|
|
"""
|
|
|
|
|
import datetime
|
|
|
|
|
import time
|
|
|
|
|
import logging
|
|
|
|
|
from ipware.ip import get_real_ip
|
|
|
|
|
from DjangoBlog.utils import cache
|
|
|
|
|
from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OnlineMiddleware(object):
|
|
|
|
|
def __init__(self, get_response=None):
|
|
|
|
|
@ -25,21 +28,22 @@ class OnlineMiddleware(object):
|
|
|
|
|
super().__init__()
|
|
|
|
|
|
|
|
|
|
def __call__(self, request):
|
|
|
|
|
''' page render time '''
|
|
|
|
|
start_time = time.time()
|
|
|
|
|
response = self.get_response(request)
|
|
|
|
|
http_user_agent = request.META.get('HTTP_USER_AGENT', [])
|
|
|
|
|
if 'Spider' in http_user_agent or 'spider' in http_user_agent:
|
|
|
|
|
return response
|
|
|
|
|
try:
|
|
|
|
|
cast_time = time.time() - start_time
|
|
|
|
|
if ELASTICSEARCH_ENABLED:
|
|
|
|
|
time_taken = round((cast_time) * 1000, 2)
|
|
|
|
|
url = request.path
|
|
|
|
|
from django.utils import timezone
|
|
|
|
|
|
|
|
|
|
ElaspedTimeDocumentManager.create(url=url, time_taken=time_taken, log_datetime=timezone.now(),
|
|
|
|
|
type='blog', useragent=http_user_agent)
|
|
|
|
|
response.content = response.content.replace(b'<!!LOAD_TIMES!!>', str.encode(str(cast_time)[:5]))
|
|
|
|
|
except:
|
|
|
|
|
pass
|
|
|
|
|
http_user_agent = request.META.get('HTTP_USER_AGENT', '')
|
|
|
|
|
|
|
|
|
|
if 'spider'.upper() not in http_user_agent.upper():
|
|
|
|
|
try:
|
|
|
|
|
cast_time = time.time() - start_time
|
|
|
|
|
if ELASTICSEARCH_ENABLED:
|
|
|
|
|
time_taken = round((cast_time) * 1000, 2)
|
|
|
|
|
url = request.path
|
|
|
|
|
from django.utils import timezone
|
|
|
|
|
|
|
|
|
|
ElaspedTimeDocumentManager.create(url=url, time_taken=time_taken, log_datetime=timezone.now(),
|
|
|
|
|
type='blog', useragent=http_user_agent)
|
|
|
|
|
response.content = response.content.replace(b'<!!LOAD_TIMES!!>', str.encode(str(cast_time)[:5]))
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error("Error OnlineMiddleware: %s" % e)
|
|
|
|
|
return response
|
|
|
|
|
|