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进程
    
  • 相关阅读:
    【WPF】ListBox GridViewColumn Header 文字换行、文字多行显示
    【Unity】讯飞语音识别SDK
    【Unity】UGUI无法修改UI元素的Pivot锚点位置
    【Unity】EasyTouch5触屏检测
    【Unity】序列化字典Dictionary的问题
    【WPF】自定义形状的按钮Button
    【WPF】图片按钮的单击与双击事件
    【Unity】ShareSDK、SMSSDK的基本使用与常见问题
    【Unity】不能新建项目
    【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:Program FilesJavajre1.8.0_131libamd64jvm.cfg'
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/14110255.html
Copyright © 2011-2022 走看看