最近因工作需要,使用了celery,一直没有时间总结,抽空记录celery在学习应用中的一些问题
1、安装
创建python虚拟环境,安装如下包:
pip install Django==1.10.8
pip install celery==4.2.0
pip install redis==2.10.6
2、celery快速入门引导
4.2.0 版本 Getting Started 官方文档戳我
英语还是需要能大概读懂的,读不懂的语句只能依靠翻译咯,坚持看多了英文文档,其实还是对阅读理解很有帮助的,毕竟最新的文档都是英文的。
说道英语底子薄,安利一把,推荐一款翻译利器,谷歌浏览器插件划词翻译,选中单词或句子自动翻译,很棒的小公举。如果访问不了,百度一个离线安装包吧,网络原因,折腾是必经之路啊。
- Celery介绍
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。
-
Celery 主要包含以下几个模块:
-
任务模块 Task
包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列。 -
消息中间件 Broker
Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列。Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。 -
任务执行单元 Worker
Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它。 -
任务结果存储 Backend
Backend 用于存储任务的执行结果,以供查询。同消息中间件一样,存储也可使用 RabbitMQ, Redis 和 MongoDB 等。
-
-
使用 Celery 实现异步任务主要包含三个步骤:
- 创建一个 Celery 实例
- 启动 Celery Worker
- 应用程序调用异步任务
下面是一个最简单的应用:tasks.py
from celery import Celery
broker = 'redis//127.0.0.1:6379/0'
backend = 'redis//127.0.0.1:6379/0'
# broker 存储生产者消息
# backend 存储任务消息结果(不需要结果存储可以不配置)
app = Celery('hello', broker=broker, backend=backend)
@app.task
def hello():
return 'hello world'
启动worker进程,在文件根目录下运行:
celery -A tasks worker --loglevel=info
这样最简单的celery就启动了,我们可以用来测试一些celery的特性,熟悉它的功能,参照文档进一步的深入学习,在tasks.py目录下启动python终端。
>>> from tasks import hello
>>> result = hello.delay()
>>> result.ready()
False
>>> result.ready()
True
>>> result.get()
'hello world'
以上这个只是用来快速了解学习使用,具体的还需要参照文档学习。
在使用过程中,还是碰到了许多问题的,关于路径、命名、配置等,待总结记录。。。
网友评论