Celery简介

Posted on 2015-01-03(Sat) in 任务调度 • 1 min read

Celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。

Celery用于生产系统每天处理数以百万计的任务。

Celery是用Python编写的,但该协议可以在任何语言实现。它也可以与其他语言通过webhooks实现。

由于Celery 3.0系列对以前的系列进行了大量重构优化,现在开始使用就没必要研究旧版本了,所以此介绍以3.0.24的文档为基础。

Celery的工作结构

在使用Celery的时候要明白它的大致结构,Celery的结构非常简单,大致分为3个部分:

  1. worker部分负责任务的处理,即工作线程,在我的理解中工作线程就是你写的python代码,当然还包括python调用系统工具功能
  2. broker部分负责任务消息的分发以及任务结果的存储,这部分任务主要由中间数据存储系统完成,比如消息队列服务器RabbitMQ、redis、 Amazon SQS、MongoDB、IronMQ等或者关系型数据库,使用关系型数据库依赖sqlalchemy或者django的ORM
  3. Celery主类,进行任务最开始的指派与执行控制,他可以是单独的python脚本,也可以和其他程序结合,应用到django或者flask等 web框架里面以及你能想到的任何应用

Celery的安装

Celery只是一个python包,所以可以通过pip或者easy_install安装,除此之外还需要安装broker的系统,我使用的是redis,除了安装redis以外还需要安装celery-with-redis

pip install celery
pip install celery-with-redis …

Continue reading