gue*_*tli 5 django postgresql psycopg2
我想知道在psycopg2连接上执行的sql查询的数量.
有没有办法得到这个数字?
我想警告一个http请求是否产生太多语句.
我正在运行一个django应用程序.如果DEBUG为True,那么我有connection.queries.但我想从生产服务器获取此值
更新
我想从prod环境中获取数字(统计数据).这个问题与调试特定的http请求无关.
看看django-silk。它是一种分析工具,可记录响应时间和查询数量等指标。
如果您想推出自己的解决方案并且正在使用 Django 2.0,则可以创建一个带有连接包装器的中间件。该文档甚至展示了一个QueryLogger
类:
import time
from django.db import connection
class QueryLogger:
def __init__(self):
self.queries = []
def __call__(self, execute, sql, params, many, context):
current_query = {'sql': sql, 'params': params, 'many': many}
start = time.time()
try:
result = execute(sql, params, many, context)
except Exception as e:
current_query['status'] = 'error'
current_query['exception'] = e
raise
else:
current_query['status'] = 'ok'
return result
finally:
duration = time.time() - start
current_query['duration'] = duration
self.queries.append(current_query)
class QueryLogginMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
ql = QueryLogger()
with connection.execute_wrapper(ql):
response = self.get_response(request)
# do something with ql.queries here
return response
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
172 次 |
最近记录: |