在使用 Tastypie 的 Django 应用程序上进行分析的最佳工具是什么(所有响应或 JSON,所以 django_toolbar 在这种情况下不好)?
4 回答
一种可能的解决方案是创建一个仅将 TastyPie 响应呈现为 HTML 的视图。这将允许 django-debug-toolbar 输出正确的分析数据。以下是一个相当快速和肮脏的尝试。
在 urls.py 中:
只需将以下行添加到您的 url 模式中,但请确保仅在启用调试时才包含它。
(r'^api_profile/(?P<resource>.*)$', 'common.views.api_profile')
在 common/views.py 中:
将此视图放置在您想要的任何位置,我已将其放在我的常用应用程序中。
from django.shortcuts import render_to_response
# Import the tastypie.api.Api object with which your api resources are registered.
from apps.api.urls import api
def api_profile(request, resource):
""" Allows easy profiling of API requests with django-debug-toolbar. """
context = {}
resource = resource.strip('/')
resource = api.canonical_resource_for(resource)
obj_list = resource.wrap_view('dispatch_list')(request)
response = resource.create_response(request, obj_list)
context['api_response'] = response
return render_to_response('common/api_profile.html', context)
在模板/common/api_profile.html 中:
包括一个非常简单的模板。
<body>
{{api_response}}
</body>
现在,您可以在启用 django-debug-toolbar 的情况下导航到“/api_profile/a_resource/”,并获取用于生成 a_resource 列表视图的分析数据。也可以使用请求参数,例如我一直在分析请求'api_profile/posts/?limit=8&offset=16'。
如果您想付款,New Relic很好。您还可以在https://github.com/shaunsephton/django-snippetscream中使用 hotshot profiler 快速查看正在发生的事情
我使用这个中间件-> https://djangosnippets.org/snippets/2126/
正如评论所述,只是
通过将其添加到您的 MIDDLEWARE_CLASSES 来安装它。如果您以超级用户身份登录,或者当 settings.DEBUG 为 True 时,它始终处于活动状态。要使用它,请将 'profile=1' 作为 GET 或 POST 参数传递给任何 HTTP 请求。
它将创建一个交互式 HTML,显示执行的查询、时间、方法……你应该试一试!
我从未真正尝试过分析 django 应用程序。但前段时间我读过一篇关于这个主题的有趣文章。 http://reinout.vanrees.org/weblog/2012/04/18/profiling-python.html