内部结构:工人 — Python 文档

来自菜鸟教程
Celery/docs/latest/internals/worker
跳转至:导航、​搜索

内部人员:工人

简介

Worker 由 4 个主要组件组成:消费者、调度程序、中介和任务池。 所有这些组件以两种数据结构并行运行:就绪队列和 ETA 计划。


数据结构

计时器

定时器使用 heapq 来调度内部功能。 它非常高效,可以处理数十万个条目。


组件

消费者

使用 :pypi:`Kombu` 从代理接收消息。

收到消息后,它会转换为 celery.worker.request.Request 对象。

具有 ETA 或速率限制的任务被输入 定时器 ,可以立即处理的消息被发送到执行池。

ETA 和 rate-limit 一起使用将导致在 ETA 之后安排任务时遵守速率限制。


计时器

计时器调度内部功能,如清理和内部监控,但它也调度 ETA 任务和速率限制任务。 如果计划任务 ETA 已通过,则将其移至执行池。


任务池

这是一个稍微修改的 multiprocessing.Pool。 它主要以相同的方式工作,但它确保所有工作人员始终都在运行。 如果缺少一个工人,它会用一个新的代替它。