我正在寻找将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()}
},
}
由于
答案 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")