celery--turorial

Celery

Celery (芹菜)是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。

Celery架构

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。

消息中间件: Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis, MongoDB (experimental), Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ

任务执行单元 :Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储 :Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, Redis,memcached, MongoDB,SQLAlchemy, Django ORM,Apache Cassandra, IronCache 另外, Celery还支持不同的并发和序列化的手段。

并发 :Prefork, Eventlet, gevent, threads/single threaded

序列化 :pickle, json, yaml, msgpack. zlib, bzip2 compression, Cryptographic message signing 等等

安装

pip install celery

选择消息中间件(Broker)

消息中间件有多种选择,本文使用redis。其他的消息中间件的使用方法参考官方文档

redis的配置形式如下

redis://:password@hostname:port/db_number

例如:

BROKER_URL = 'redis://localhost:6379/0'

应用

创建一个应用,broker使用redis:

使用命令:

$ celery -A tasks worker --loglevel=info

对于celery的命令可以查看celery --help以及 celery worker --help

执行结果:

发送一个任务:

执行结果:

保存结果

如果需要保存结果的话,需要给celery配置一个backend。

执行:

Django使用celery

使用的是django-celery包:

pip install django-djcelery

配置djcelery

下面是djcelery的有关配置,定义在Django项目的settings模块内。
首先INSTALLED_APPS之中需要写入djcelery。

说明:直接使用django做broker生产环境不建议,建议使用redis或者rabbitMQ
需要在settings.py之中载入celery的配置。

配置好了celery之后需要创建Celery所需要的数据表(django1.7)

python manage.py migrate
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容