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  后面写的是生产者所在文件名

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

      

     

  • 相关阅读:
    数组的简单操作
    关系型数据库的设计范式

    高斯分布
    一 .HTTP协议
    为什么OGNL表达式功能强大?
    官方文档 恢复备份指南三 Recovery Manager Architecture
    官方文档 恢复备份指南二 Getting Started with RMAN
    官方文档 恢复备份指南一 Introduction to Backup and Recovery
    Python中lambda使用简易教程
  • 原文地址:https://www.cnblogs.com/attila/p/10835847.html
Copyright © 2011-2022 走看看