没有结果的芹菜任务写入结果后端
Celery tasks without result write to result backend
我有一些任务应该 return 结果,有些任务不应该。
我想强制不应该 return 结果的任务不要在结果后端写入任何内容(例如 None)。我怎样才能在 Celery 中实现它?
例如这是我的任务:
@app.task
def taskWithResult():
# ...code...
return res
@app.task
def taskWithNoResult():
# ...code without return...
而且我还有一些其他任务的特殊队列,这些任务也没有 return 任何结果,我可以将该队列标记为不能写入结果后端的任务吗?
从 celery 文档中,您可以将忽略结果标志设置为 True。
http://docs.celeryproject.org/en/latest/reference/celery.app.task.html?highlight=default_retry_delay#celery.app.task.Task.ignore_result
例如:
@app.task(ignore_result=True)
def taskWithNoResult():
# ...code without return..
全局配置
app.conf.task_ignore_result = True
本地关闭return任务结果:
@app.task(ignore_result=True)
def add(...):
如果只想return持久化任务执行失败的异常结果,以供后续排查分析,那么在使用数据库作为Result Backend时,可以应用如下配置:
只在结果后端存储任务错误。
app.conf.task_ignore_result = True
app.conf.task_store_errors_even_if_ignored = True
我有一些任务应该 return 结果,有些任务不应该。 我想强制不应该 return 结果的任务不要在结果后端写入任何内容(例如 None)。我怎样才能在 Celery 中实现它?
例如这是我的任务:
@app.task
def taskWithResult():
# ...code...
return res
@app.task
def taskWithNoResult():
# ...code without return...
而且我还有一些其他任务的特殊队列,这些任务也没有 return 任何结果,我可以将该队列标记为不能写入结果后端的任务吗?
从 celery 文档中,您可以将忽略结果标志设置为 True。 http://docs.celeryproject.org/en/latest/reference/celery.app.task.html?highlight=default_retry_delay#celery.app.task.Task.ignore_result
例如:
@app.task(ignore_result=True)
def taskWithNoResult():
# ...code without return..
全局配置
app.conf.task_ignore_result = True
本地关闭return任务结果:
@app.task(ignore_result=True)
def add(...):
如果只想return持久化任务执行失败的异常结果,以供后续排查分析,那么在使用数据库作为Result Backend时,可以应用如下配置:
只在结果后端存储任务错误。
app.conf.task_ignore_result = True
app.conf.task_store_errors_even_if_ignored = True