• celery 基础教程(二):简单实例


    前言

    使用celery包含三个方面:1. 定义任务函数。2. 运行celery服务。3. 客户应用程序的调用。

    实例一:

    #1. 定义任务函数

    创建一个文件 tasks.py输入下列代码:

    from celery import Celery #导入Celery
    
    broker = 'redis://127.0.0.1:6379/5' # 设置broker
    
    backend = 'redis://127.0.0.1:6379/6' # 设置backend
    
    app = Celery('tasks', broker=broker, backend=backend) # 实例化celery
    
    # 编写任务
    @app.task
    def add(x, y):
    
        return x + y

    上述代码导入了celery,然后创建了celery 实例 app,实例化的过程中指定了任务名tasks(和文件名一致),传入了broker和backend。然后创建了一个任务函数add

    #2. 运行celery服务

    下面启动celery服务。在当前命令行终端运行(分别在 env1 和 env2 下执行):

    celery -A tasks worker  --loglevel=info

    目录结构 (celery -A tasks worker --loglevel=info 这条命令当前工作目录必须和 tasks.py 所在的目录相同。即 进入tasks.py所在目录执行这条命令。

     使用 python 虚拟环境 模拟两个不同的 主机。

     此时会看见一对输出。包括注册的任务啦。

    #3. 客户应用程序的调用。

    3.1 交互式客户端程序调用方法

    打开一个命令行,进入Python环境。

    调用 delay 函数即可启动 add 这个任务。这个函数的效果是发送一条消息到broker中去,这个消息包括要执行的函数、函数的参数以及其他信息,具体的可以看 Celery官方文档。这个时候 worker 会等待 broker 中的消息,一旦收到消息就会立刻执行消息。

    启动了一个任务之后,可以看到之前启动的worker已经开始执行任务了。

    现在是在python环境中调用的add函数,实际上通常在应用程序中调用这个方法。

    注意:如果把返回值赋值给一个变量,那么原来的应用程序也会被阻塞,需要等待异步任务返回的结果。因此,实际使用中,不需要把结果赋值。

    3.2应用程序中调用方法

    新建一个 main.py 文件 代码如下:

    from tasks import add
    
    r = add.delay(2, 2)
    
    r = add.delay(3, 3)
    
    print(r.ready())
    
    print(r.result)
    
    print(r.get())

     在celery命令行可以看见celery执行的日志。打开 backend的redis,也可以看见celery执行的信息。

    实例二:

    首先要有一个main文件

    再者要有一个config文件

    然后就是任务执行文件

    如图 celery的目录

     main.py 文件

     config.py文件

      tasks.py文件

     最后

    celery服务的开启命令

    celery -A celery_tasks.email.tasks worker -l info 

    注意:celery_tasks.email.tasks 是该函数执行的路径 填写正确才能启动celery服务

  • 相关阅读:
    优秀网站看前端 —— 小米Note介绍页面
    移动端手势库hammerJS 2.0.4官方文档翻译
    io.js入门(二)—— 所支持的ES6(上)
    发布两款JQ小插件(图片查看器 + 分类选择器),开源
    io.js入门(一)—— 初识io.js
    (翻译)《Hands-on Node.js》—— Why?
    前端神器avalonJS入门(三)
    (翻译)《Hands-on Node.js》—— Introduction
    Linux 安装 adb环境
    MyBatisPlus
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12705478.html
Copyright © 2020-2023  润新知