zoukankan      html  css  js  c++  java
  • celery异步任务

    celery异步任务

    1.安装相关包 与 管理命令

    pip3 install Django==2.0.4
    pip3 install celery==4.3.0
    pip3 install redis==3.2.1	#必须是3.2.1不可以低
    pip3 install  django-celery==3.1.17
    pip3 install ipython==7.6.1 
    
    find ./ -type f | xargs sed -i 's/
    $//g'  # 批量将当前文件夹下所有文件装换成unix格式
    

    2.celery在项目中测试

    我们创建一个celery_task的python包 在包中创建一个mian.py的文件

    import os, sys
    from celery import Celery
    
    # 定义celery实例, 需要的参数, 1, 实例名, 2, 任务发布位置, 3, 结果保存位置
    app = Celery('mycelery',
                 broker='redis://127.0.0.1:6379/14',  # 任务存放的地方
                 backend='redis://127.0.0.1:6379/15')  # 结果存放的地方
    
    
    @app.task
    def add(x, y):
        return x + y
    

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    下面我们打开终端测试一下代码,查看add是否可以异步计算。

    1.进入celery_task文件夹中。

    1、启动Celery Worker来开始监听并执行任务

    celery -A main worker --loglevel=info

    main是tasks.py文件:必须在tasks.py所在目录下执行

    2、调用任务:再打开两个终端,进行命令行模式,调用任务

    import main

    t2 = main.add.delay(9,11)

    ​ #然后在另一个终端重复上面步骤执行

    t1 = tasks.add.delay(3,4)

    t1.get() #由于t2执行sleep了3s所以t1.get()需要等待

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    现在我们可以清晰的看的执行函数在另一个终端中把计算结果计算出来了。现在我们已经实现了异步了。

    注意:celery异步执行必须加delay() 否则根本不会异步执行

    管理命令:项目中启动和关闭celery worker

    #单线程启动celery
    celery multi start w1 w2 -A celery_pro -l info     #一次性启动w1,w2两个worker
    celery -A celery_task worker -l info -P eventlet
    celery -A celery_pro status                  #查看当前有哪些worker在运行
    celery multi stop w1 w2 -A celery_pro            #停止w1,w2两个worker
    
    
    
    find ./ -type f | xargs sed -i 's/
    $//g'     # 批量将当前文件夹下所有文件装换成unix格式
    # celery并发数:最多50个,最少5个
    celery  multi start celery_test -A celery_test -l debug --autoscale=50,5        
    http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-autoscale
    ps auxww|grep "celery worker"|grep -v grep|awk '{print $2}'|xargs kill -9       # 关闭所有celery进程
    
  • 相关阅读:
    nodejs cheerio模块提取html页面内容
    简短的perl程序
    laravel 模型操作
    Laravel 学习笔记
    记录一下应该养成的好习惯
    phpstudy设置允许远程访问mysql数据库
    删除专家账号,要注意删干净
    使用 Composer 安装Laravel扩展包的几种方法
    上传文件太大,后台无法获取到文件的问题
    在Laravel中使用mongoDB
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/14110255.html
Copyright © 2011-2022 走看看