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 单线程

序列化方式

pickle json yaml 另支持压缩 签名 加密

监控

定时任务

work flow

资源泄露保护

执行时间限制

自定义

安装

使用redis

pip install celery[redis,auth,gevent]

使用rabbitmq

pip install celery[librabbitmq,auth,gevent]

中间件

你可能感兴趣的:(Celery 简介)