Log update/delete of models.

This commit is contained in:
Jonathan Slenders 2014-09-03 15:11:15 +02:00
parent 2f482b4518
commit d6935a0d61
2 changed files with 44 additions and 2 deletions

View File

@ -1,5 +1,40 @@
from .celery import register_celery_events
from django.conf import settings
from django.db.models.signals import post_save, post_delete
from django_statsd.clients import statsd
from .celery import register_celery_events
if getattr(settings, 'STATSD_CELERY_SIGNALS', False):
register_celery_events()
def model_save(sender, **kwargs):
"""
Handle ``save`` events of all Django models.
"""
instance = kwargs.get('instance')
# Increase statsd counter.
statsd.incr('models.%s.%s.%s' % (
instance._meta.app_label,
instance._meta.object_name,
'create' if kwargs.get('created', False) else 'update',
))
def model_delete(sender, **kwargs):
"""
Handle ``delete`` events of all Django models.
"""
instance = kwargs.get('instance')
# Increase statsd counter.
statsd.incr('models.%s.%s.delete' % (
instance._meta.app_label,
instance._meta.object_name,
))
if getattr(settings, 'STATSD_MODEL_SIGNALS', True):
post_save.connect(model_save)
post_delete.connect(model_delete)

View File

@ -209,6 +209,14 @@ would look that up on the graphite server with the key::
stats.addons.view.GET
Django Model save and delete integration
----------------------------------------
You can log all create, update and delete events of django models.
Add to your Django settings::
STATSD_MODEL_SIGNALS = True
Celery signals integration
--------------------------
@ -219,7 +227,6 @@ To enable this, add the following to your Django settings::
STATSD_CELERY_SIGNALS = True
Front end timing integration
----------------------------