selery+redis
1、任务(tasks)–用户定义的函数,用于实现用户的功能,比如执行一个耗时很长的任务
2、中间介(Broker)–用于存放tasks的地方,但是这个中间介需要解决一个问题,就是可能需要存放非常非常多的tasks,而且要保证Worker能够从这里拿取
3、执行者(Worker)–用于执行tasks,也就是真正调用我们在tasks中定义的函数
4、存储(Backend)–把执行tasks返回的结果进行存储,以供用户查看或调用
1、各模块功能
Celery中,以上组件具体功能如下:
任务模块 Task
包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列。
消息中间件 Broker
Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列。Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。
任务执行单元 Worker
Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它。
任务结果存储 Backend
Backend 用于存储任务的执行结果,以供查询。同消息中间件一样,存储也可使用 RabbitMQ, Redis 和 MongoDB 等。