zoukankan      html  css  js  c++  java
  • celery

    一 . 异步

      消费者文件

    from celery import Celery
    # 消费者, 生产者生产的放在broker里,返回值可以放在backend(可不写)  
    # 这两个容器可以是rabbitmq也可以是redis
    app = Celery('task', broker='redis://192.168.111.129:6379/6',
                 backend='redis://192.168.111.129:6379/5')
    
    @app.task
    def myfunc1():
        return '我是func1'
    
    # celery worker  -A asyn -l info -P eventlet(在Terminal中输入这个指令,相当于run)

      生产者文件

    from asyn import myfunc1, app
    from celery.result import AsyncResult
    
    # 生产者
    for i in range(10):
        # 开始生产
        producer = myfunc1.delay()
        print(producer)
    
    # 开始生产
    producer = myfunc1.delay()
    res = AsyncResult(id=producer.id, app=app)
    # 获取返回值, 前提是消费者那里写了backup
    print(producer.get())
    # 查看状态
    print(producer.status)
    # 判断是否成功,返回布尔值
    print(producer.successful())
    
    # 右键run执行

    二 . 延时任务

      消费者文件(同上)

      生产者文件

    from asyn import myfunc1
    
    # 延时任务
    producer = myfunc1.apply_async(countdown=5)  # 倒计时5秒

    # 右键run运行

    三 . 周期性任务

      消费者文件(同上)

      生产者文件

    from asyn import app
    from celery.beat import crontab
    
    app.conf.beat_schedule = {  # 必须是这样写
        'cycleTask': {
            'task': 'asyn.myfunc1',  # asyn文件中的myfunc1函数
            'schedule': 5,  # 每隔时间执行一下
            # args 如果需要传参的话可以传
        },
        'crontab': {
            'task': 'asyn.myfunc1',  # asyn文件中的myfunc1函数
            'schedule': crontab(minute=20),  # 分钟为20的时候执行
            # args 如果需要传参的话可以传
        }
    }
    
    # 这个文件中不能右键run了,也在Terminal中执行下面的指令
    # celery beat -A cycle_task -l info  # 这个 -A  后面写的是生产者所在文件名

    四 . 生产者消费者放到文件下的正确执行方法

      

     

  • 相关阅读:
    Base64编码原理分析
    对 js 高程 Preflighted Reqeusts 的理解
    js 跨域 之 修改服务器配置-XAMPP-Apache (nginx 拉到最后!)
    js 模拟 select 的 click 事件
    串讲-解释篇:作用域,作用域链,执行环境,变量对象,活动对象,闭包
    js 匿名函数-立即调用的函数表达式
    Java I/O流输入输出,序列化,NIO,NIO.2
    Java8Lambda表达式
    设计模式之适配器模式
    设计模式之装饰器设计模式
  • 原文地址:https://www.cnblogs.com/attila/p/10835847.html
Copyright © 2011-2022 走看看