假设我有以下资源(来自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
方法中增加。
答案 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):