sentry - Using raven with celery in django -


i'm trying setup raven log sentry asynchronously using celery. think i've set things correctly, but send_raw functions in celeryclient not being called (and nothing being picked in sentry or celery). things work if don't change sentry_client setting below (the logs appear in sentry). setting are:

sentry_client = 'raven.contrib.django.celery.celeryclient' 

installed apps:

'raven.contrib.django',     # sentry.client.celery should replaced raven.contrib.django.celery in installed_apps.     'raven.contrib.django.celery',     

logging:

 logging = {     'version': 1,     'disable_existing_loggers': true,     'root': {         'level': 'warning', # warning or above go sentry...         'handlers': ['sentry'], # taras sends errors sentry     },     'formatters': {         'verbose': {             'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'         },     },     'handlers': {         'sentry': {             'level': 'error',             'class': 'raven.contrib.django.handlers.sentryhandler', # communicates sentry         },         'console': {             'level': 'debug',             'class': 'logging.streamhandler',             'formatter': 'verbose'         }     },     'loggers': {         'django.db.backends': {             'level': 'error',             'handlers': ['console'],             'propagate': false,         },         'raven': {             'level': 'debug',             # class logging.streamhandler(stream=none)             # returns new instance of streamhandler class. if stream specified, instance use logging output; otherwise, sys.stderr used.                         'handlers': ['sentry'], # sentry hits sentry configuration above, console default according above definition of streamhandler hits stderr             'propagate': false,         },         'sentry.errors': {             'level': 'debug',             'handlers': ['console'],             'propagate': false,         },     }, } 

i have modified celeryclient to

 class celeryclient(celerymixin, djangoclient):     def send_integrated(self, kwargs):         self.send_raw_integrated.delay(kwargs)         print "yo"      @task(routing_key='sentry')     def send_raw_integrated(self, kwargs):         super(celeryclient, self).send_integrated(kwargs)         print "yo2" 

and traces don't come out

the celery client in raven uses routing key on task:

class celerymixin(object):     def send_encoded(self, *args, **kwargs):         "errors through celery"         self.send_raw.delay(*args, **kwargs)      @task(routing_key='sentry')     def send_raw(self, *args, **kwargs):         return super(celerymixin, self).send_encoded(*args, **kwargs) 

django default uses direct exchange type:

http://docs.celeryproject.org/en/latest/userguide/routing.html

which means (i believe) messages produced celery not routed queue (and never picked up).

you can define this, example:

celery_queues = {     "default": {         "exchange": "default",         "binding_key": "default"},     "sentry": {         "exchange": "default",         "binding_key": "sentry"}, } 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -