• celery 分布式异步队列框架使用方法


    简介:

    Celery  是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery的worker从中取消息

    Celery  用于存储消息以及celery执行的一些消息和结果

    对于brokers,官方推荐是rabbitmq和redis

    对于backend,也就是指数据库,为了简单一般使用redis

    安装:
    windows下:

    pip install celery
    pip install eventlet (运行需要依赖此包)

    linux 下:

    pip install celery

    crontab_task,taobaovideo_task 分别是两个任务,

    main.py

    from celery import Celery
    import os
    
    #将settings添加到环境中
    os.environ['DJANGO_SETTINGS_MODULE'] = 'TaoBaoVideoProject.settings'
    
    #注册异步app 参数是你的项目名称
    celery_app = Celery('TaoBaoVideoProject')
    #导入配置文件
    celery_app.config_from_object('celery_tasks.config')
    celery_app.autodiscover_tasks(['celery_tasks.taobaovideo_task','celery_tasks.crontab_task']) 

    # 最下面这行,每加一个任务,在这里注册写入即可,

    config.py

    broker_url = "redis://127.0.0.1:6379/5"      #redis设置密码的:redis://xxxxxxx@127.0.0.1:6379/5
    result_backend = "redis://127.0.0.1:6379/6"
    timezone = 'Asia/Shanghai'

    # 这里注意首先需要把redis数据库安装完成

    tasks.py中

    视图函数中这样调用:

    启动命令:

    celery -A celery_tasks.main worker -l info -P eventlet

    这个则代表启动成功,如果实在服务器上运行的话我们需要添加守护进程,命令如下:

    celery multi start w1 -A celery_tasks.main -l info --logfile=./celerylog.log

     这个则代表运行成功,并在当前文件夹生成日志文件

    查询该任务的执行结果:

     具体实现细节可参考:https://www.cnblogs.com/cwp-bg/p/8759638.html

    celrey定时任务实现:

    tasks.py中:

    from celery.task import periodic_task
    from utils.crontab_video_method import TaoBaoVideoUpload
    
    @periodic_task(run_every=90)   #90秒执行一次该方法
    def crontab_upload_video():
        TaoBaoVideoUpload().detection_video()
        return '定时任务执行成功'

    命令:

    celery -A celery_tasks.main beat -l info

    成功运行结果如下:

    具体方法参考:https://www.cnblogs.com/52forjie/p/9364136.html 

  • 相关阅读:
    大三学长带我学习JAVA.作业8。。1 有1、2、3、4这几个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    详解Manifest
    反射机制和配置文件的用法
    大三学长带我学习JAVA.作业8。 判断101200之间有多少个素数,并输出所有素数。
    序曲
    java打包生成jar和exe全过程
    大三学长带我学习JAVA.作业6 编写日历表 和vim
    大三学长带我学习JAVA.作业7 利用for循环打印 9*9 表
    动态代理类
    pku 3522 Slim Span
  • 原文地址:https://www.cnblogs.com/lvye001/p/11698068.html
Copyright © 2020-2023  润新知