在我的项目中,我有一个芹菜任务,该
任务由芹菜节拍每 30 秒发送给工人。我有兴趣了解芹菜如何执行芹菜任务?它是为每个任务生成一个新线程,还是为任务生成一个新工作线程。我们如何知道任务是否完成并从我正在使用 RabbitMQ 的消息代理队列中删除。
芹菜
工作人员不断轮询芹菜队列以查找要执行的任务。每个工作线程的辅助角色数和进程数(并发)可以在 celery 配置文件中配置。Celerybeat 调度程序扫描 celerybeat 数据库,并将要执行的任务添加到队列中。然后,任何空闲工作人员从队列中选取任务并执行任务并将其标记为已读
Celery (*Manages number of workers)
Worker1 Worker2 (Reads task from celery queue and creates process for execution)
W1-P1 W1-P2 W2-P1 W2-P2 (executes the task)
Celerybeat (polls for tasks, adds due tasks to celery-queue)
卡莱里队列(包含到期任务)