python - celery worker 细节

标签 python celery-task

我有 celery 任务,队列中有 100 个输入数据,需要使用 5 个 worker 来执行。

  • 如何获取哪个工作人员正在执行哪个输入?
  • 每个 worker 执行了多少输入及其状态?
  • 如果任何任务失败,如何单独获取失败的输入数据并使用可用的 worker 重新执行?

是否有任何可能的方法来根据 worker 的具体情况定制 celery 。

我们可以结合celery worker limitation和flower

我没有使用任何框架。

最佳答案

How can I get which worker is executing which input?

使用多个 worker 有 2 个选项:

  1. 您使用单独的运行命令分别运行每个 worker
  2. 您使用命令行选项 -c 在一个命令中运行,即并发

第一种方法,flower会支持它,并会向你展示所有的 worker ,所有的任务(你称之为输入),哪个 worker 处理了哪个任务以及其他信息。

使用第二种方法,flower 将向您显示单个 worker 正在处理的所有任务。在这种情况下,您只能通过查看 celery worker 生成的日志来区分,因为在日志中它确实存储了哪个 worker THREAD 执行了哪个任务。因此,我认为根据您的要求,使用第一个选项会更好。

Each worker executed how many inputs and its status?

正如我提到的,使用第一种方法,flower 会为您提供此信息。

If any task is failed how can get failed input data in separately and re-execute with available worker?

Flower 确实提供过滤器来过滤失败的任务,并提供任务在退出时返回的状态。您还可以设置 celery 应该重试失败任务的次数。但即使在重试任务失败后,您也必须自己重新启动任务。

关于python - celery worker 细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34737287/

相关文章:

python - Celery worker 未在网络更改/IP 更改时重新连接

python - 多个工作节点上的 Django + Celery 任务

python - 当我将 Django Celery apply_async 与 eta 一起使用时,它会立即完成工作

python - celery 一遍又一遍地重新运行长时间运行的已完成任务

python - 无需Windows专用工具即可向现有xlsx添加密码(无人值守)

python - 有什么工具可以将 Lisp 代码翻译成 Python 吗?

python - 从查询 Django 访问模型方法 "def()"

python - Django 表单新手问题

Python 从字典中删除特定值

python - 测试 celery 任务是否仍在处理中