3

在使用 Tastypie 的 Django 应用程序上进行分析的最佳工具是什么(所有响应或 JSON,所以 django_toolbar 在这种情况下不好)?

4

4 回答 4

1

一种可能的解决方案是创建一个仅将 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'。

于 2013-10-30T03:17:28.250 回答
0

如果您想付款,New Relic很好。您还可以在https://github.com/shaunsephton/django-snippetscream中使用 hotshot profiler 快速查看正在发生的事情

于 2013-03-09T23:28:50.913 回答
0

我使用这个中间件-> https://djangosnippets.org/snippets/2126/

正如评论所述,只是

通过将其添加到您的 MIDDLEWARE_CLASSES 来安装它。如果您以超级用户身份登录,或者当 settings.DEBUG 为 True 时,它​​始终处于活动状态。要使用它,请将 'profile=1' 作为 GET 或 POST 参数传递给任何 HTTP 请求。

它将创建一个交互式 HTML,显示执行的查询、时间、方法……你应该试一试!

于 2015-03-06T14:17:20.360 回答
0

我从未真正尝试过分析 django 应用程序。但前段时间我读过一篇关于这个主题的有趣文章。 http://reinout.vanrees.org/weblog/2012/04/18/profiling-python.html

于 2012-05-05T09:57:40.040 回答