Tastypie - 计数失败并成功请求

时间:2015-08-27 17:23:34

标签: django tastypie

假设我有以下资源(来自tastypie cookbook http://django-tastypie.readthedocs.org/en/latest/cookbook.html#creating-per-user-resources的例子):

class EnvironmentResource(ModelResource):
    class Meta:
        queryset = Environment.objects.all()
        resource_name = 'environment'
        list_allowed_methods = ['get', 'post']
        authentication = ApiKeyAuthentication()
        authorization = Authorization()
        # maybe even some validation
        validation = FormValidation(form_class=forms.EnvironmentResourceForm)

    def obj_create(self, bundle, **kwargs):
       return super(EnvironmentResource, self).obj_create(bundle, user=bundle.request.user)

现在我想使用statsd客户端(https://github.com/jsocol/pystatsd)来计算http状态代码的出现次数(或者只是分别计算2XX和4XX / 5XX)。但我不知道我应该在哪里放置我的代码,statsd.incr('success')statsd.incr('failure')。你有什么建议吗?

或许你知道其他计算http状态代码的方法吗? (我不想分析访问日志)。

提前致谢!

修改

也许我应该定义一个新的中间件(如:https://docs.djangoproject.com/en/1.8/_modules/django/contrib/messages/middleware/),它将被解析为最后一个。计数器将在process_response方法中增加。

1 个答案:

答案 0 :(得分:1)

您可以覆盖dispatch()方法。类似的东西:

def dispatch(self, request_type, request, **kwargs):
    # do something with request_type and request.status_code
    return super(EnvironmentResource, self).dispatch(self, request_type, request, **kwargs):