celery4.2使用记录

最近因工作需要,使用了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 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。
85822734.jpg
  • Celery 主要包含以下几个模块:

    • 任务模块 Task
      包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列。

    • 消息中间件 Broker
      Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列。Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。

    • 任务执行单元 Worker
      Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它。

    • 任务结果存储 Backend
      Backend 用于存储任务的执行结果,以供查询。同消息中间件一样,存储也可使用 RabbitMQ, Redis 和 MongoDB 等。

  • 使用 Celery 实现异步任务主要包含三个步骤:

    1. 创建一个 Celery 实例
    2. 启动 Celery Worker
    3. 应用程序调用异步任务

下面是一个最简单的应用: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'

以上这个只是用来快速了解学习使用,具体的还需要参照文档学习。


在使用过程中,还是碰到了许多问题的,关于路径、命名、配置等,待总结记录。。。

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

推荐阅读更多精彩内容