Celery节拍添加链接错误签名

时间:2015-12-07 10:48:23

标签: celery celerybeat

我正在寻找将celery beats schedule选项设置为任务的解决方案,以包含link_error回调。

我的目的是在我的计划任务中记录异常。 Adding a link_error选项似乎是前进的方向。

但是,我不确定如何在设置文件中获取错误任务的签名。

这里我的错误处理程序定义直接来自文档

@app.task(bind=True)
def error_handler(self, uuid):
    result = self.app.AsyncResult(uuid)
    logger.error('Task {0} raised exception: {1!r}\n{2!r}'.format(
        uuid, result.result, result.traceback)
    )

和我的错误抛出任务

@app.task
def failme():    
    raise Exception()

这里有两件我在我的日程安排中尝试过但没有用的东西

'failme-every-10-se': {
    'task': 'ep.tasks.failme',
    'schedule': timedelta(seconds=5),
    'options': {'link_error': 'ep.tasks.error_handler.s()'}
},

import error_handler

CELERYBEAT_SCHEDULE = {    
'error-task-every-5-minutes': {
    'task': 'failme',
    'schedule': timedelta(minutes=5),        
    'options': {'link_error': error_handler.s()}
     },
}

由于

1 个答案:

答案 0 :(得分:0)

因为我没有得到解决方案,所以我采用了从不同的Task类继承:

class ErrorLoggingTask(Task):
    def on_failure(self, exc, task_id, args, kwargs, einfo):
        logger.error("Task failed: %s" % einfo)

e.g。

@shared_task(base=ErrorLoggingTask)
def my_task(arg):
    logger.info("working")