分布式任务队列Celery快速上手
Celery介绍
celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。
- 它侧重于实时操作,但对调度支持也很好。
- celery用于生产系统每天处理数以百万计的任务。
- celery是用Python编写的,但该协议可以在任何语言实现。它也可以用其他语言通过webhooks实现。
- 目前已知有php/ruby/nodejs的实现
为什么用Celery?
- 异步
- 耗时久的事儿可以扔给 Worker 处理,处理完可以触发子任务提醒
- 天然的并发能力(多进程/协程)!
- 非常方便添加 Worker 来增强处理能力
- Celery提供了Web方式的监控/报警,这样,我们就可以监控每个任务的情况了
- 出现错误可以自动处理/重试
角色介绍
Brokers: 提供队列服务,Celery支持的Brokers有:
- RabbitMQ(推荐)
- Redis
- MongoDB
- Beanstalk
- CouchDB
- SQLAlchemy(MySQL/PostgreSQL/Sqlite/Oracle)
- Amazon SQS等
Worker …
more ...