2
我試圖設置烏鴉來異步使用芹菜登錄到哨兵。我想我已經正確設置了一些東西,但是CeleryClient中的send_raw函數沒有被調用(並且沒有任何東西正在哨兵或芹菜中被拾取)。如果我不更改下面的SENTRY_CLIENT設置(日誌顯示在哨兵中),情況會起作用。我的設置是:在django中使用烏鴉與芹菜
SENTRY_CLIENT = 'raven.contrib.django.celery.CeleryClient'
安裝的程序:
'raven.contrib.django',
# sentry.client.celery should be replaced with raven.contrib.django.celery in INSTALLED_APPS.
'raven.contrib.django.celery',
記錄:
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'root': { 'level': 'WARNING', # anything warning or above will go to sentry... 'handlers': ['sentry'], # TARAS this is what sends all errors to 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', # this is what communicates to 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 a new instance of the StreamHandler class. If stream is specified, the instance will use it for logging output; otherwise, sys.stderr will be used. 'handlers': ['sentry'], # sentry hits sentry configuration above, console by default according to the above definition of streamhandler hits stderr 'propagate': False, }, 'sentry.errors': { 'level': 'DEBUG', 'handlers': ['console'], 'propagate': False, }, }, }
我已經修改CeleryClient到
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"
而且痕跡不出來
這隻有在塔拉斯的CELERY_QUEUES配置與「芹菜」代替「默認」的每個實例後,爲我工作。我相信這是Django默認隊列的名稱,所以我不確定「default」來自哪裏。 – Shane
@Shane:你能編輯Taras的答案來反映這一點嗎? – Tadeck