目录
初识celery
celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于处理异步任务队列,同时也支持任务调度。
说明
- 分布式系统:一个系统应用由不同的组件构成,我们将不同组件架构在不同的服务器中,不同组件之间通过消息通信的方式来实现协调工作。
- 图中user指的是django或者flask这样的框架,接收请求之后需要进行处理。
- 图中AMQPbroker指的是中间件,我们可以用RabbitMQ或者Redis来承担相关工作。
- 图中celery workers值得是celery,它作为消费者监听中间件中的任务,这里就需要用到并发的操作了,celery实现了并发(进程+协程),我们只需要调用就可以了。
celery的框架由三部分组成:
- 消息中间件(message broker)
- Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等。
- 官方推荐用rabbitMQ,因为它持久稳定。
- 任务执行单元(worker)
- Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。
- 任务执行结果存储(task result store)
- Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等
另外, Celery还支持不同的并发和序列化的手段
- 并发:Prefork, Eventlet, gevent, threads/single threaded
- 序列化:pickle, json, yaml, msgpack. zlib, bzip2 compression, Cryptographic message signing 等等
使用场景
celery是一个强大分布式任务队列的异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其