最近在看Celery的任务执行框架,一直没有理解所谓的一个broker来对应多个worker是怎么实现分布式的,这里提出自己的思考:是否是多个worker配置的broker是同一个,对应的task是同样的,这样来实现从一个broker到多个worker的分布式框架。如果是这样,那么将其理解为分布式的框架就很容易了。
学习笔记:
Brokers: 任务队列,即生产者-消费者模型;
backend:结果的存储;
Workers:任务的执行者,消费者;
Tasks:要Wroker来执行的任务.
执行worker:celery -A 脚本名 worker --loglevel=info
执行定时任务: celery -A 脚本名 beat
celery的worker运行在不同的机器上,每台机器上有多个task进程;
worker运行的时候连接到broker,在控制机器上脚本直接向broker发送任务即可;
so,要建立一个broker,在不同机器上运行celery worker。
celery的任务发布节点也就是broker所在的节点,worker节点只是用来执行任务的。