Celery|Celery 简介

任务队列 任务队列是一种把任务通过线程或机器进行分发的机制,输入是一个工作单元--任务,工作进程则不断地检查任务队列来执行新任务。
celery使用消息来通信,通常需要中间件中转。流程为:客户端添加消息到队列来初始化一个任务,然后消息队列系统把消息分发给工作进程。
celery可以包含多个工作进程和消息队列系统,来保证高可用性和进行水平扩展。
虽然celery是python实现的,仍可轻松实现其他语言的客户端,如php js,或可可使用webhooks来交互。
需求 可在单台机器、多台机器、集群中运行
需要py2.7+ 不支持win
需要rabbitmq或redis作为消息中间件
特性 简单 不需要配置文件
高可靠性 工作进程和客户端在连接丢失或失败时会自动重试,一些支持HA的消息系统可以做主主、主从扩展
快速 每分钟处理几百万任务,通过使用RabbitMQ librabbitmq 和 一些优化设置,可使得rtt为亚毫秒级
扩展 它的每一部分都可以灵活地扩展(自定义的pool,序列化方式,压缩,日志,定时任务,消费者,生产者,中间件)
支持的中间件 redis rabbitmq
结果存储 redis amqp memcached orm apache-Cassandra ES
并发方式 fork eventlet gevent 单线程
序列化方式 【Celery|Celery 简介】pickle json yaml 另支持压缩 签名 加密
监控 定时任务 work flow 资源泄露保护 执行时间限制 自定义 安装 使用redis

pip install celery[redis,auth,gevent]

使用rabbitmq
pip install celery[librabbitmq,auth,gevent]

中间件

    推荐阅读