• 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进程
    
  • 相关阅读:
    vue2.0使用基础
    docker 镜像中心搭建
    dubbo使用multicast注册方式消费者无法发现服务的一种情况(我遇到的情况)
    Bootstrap 避免模态框在用户点击背景空白处时,会自动关闭。
    HNOI2019滚粗记
    THUSC 2018 酱油记
    # HNOI2018滚粗记
    第二类斯特林数总结
    PKUWC 2018游记
    NOIP2017滚粗记
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/14110255.html
Copyright © 2020-2023  润新知