python - 将参数传递给 Celery on_error 任务
问题描述
我使用celery
withrabbitMQ
作为代理来管理异步任务。
我正在将一些任务组合在一起,当它们中的每一个都完成后,我正在运行一个连接任务,它将加入每个结果。这些任务集合由我设置的report_id标识。
chord([task1.s(report_id=report_id), task2.s(report_id=report_id)...]) \
(concat_task.s(report_id=report_id).set(queue='default') \
.on_error(on_chord_error.s().set(queue='default')))
这是我的自定义on_error
任务:
@celery_app.task
def on_chord_error(request, exc, traceback):
logger.error('Chord {0!r} raised error: {1!r}'.format(request.id, exc), exc_info=(type(exc), exc.args, traceback))
# BaseHandler.remove_placeholder(???report_id???) # cleaning action
我的问题是on_error
:每次和弦失败(出于任何原因)我需要将report_id(不要与request.id混淆)传递给它以执行清理操作。但是,我发现的文档对此含糊不清。似乎我无法像为单打和串联任务所做的那样将 request_id 作为任务签名的参数传递。
任何帮助,将不胜感激
解决方案
推荐阅读
- ios - NSURLProtocol registerClass 适用于 iOS 模拟器,但不适用于实际设备
- javascript - 如何在 React JS 中显示这个 JSON 数据?
- reactjs - 如何在反应原生地图上显示方向
- php - Drupal 的 Organic Group 和 Group 模块有什么区别?
- python - 如何根据特定表达式将字符串列表保存在子列表中?
- python - Python 黑客排名双向 Emunese 翻译器
- angular - Ionic 4 未找到组件工厂
- python - Scraping Stackoverflow hyperlinks with Beautifulsoup
- python - 求和函数问题
- wordpress - Azure 上的 Wordpress 错误:被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头