celery

博客主要介绍了生产者消费者文件在异步、延时任务、周期性任务中的情况,还说明了将生产者消费者放到文件下的正确执行方法。涉及大数据和数据库相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 . 异步

  消费者文件

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

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

  

 

 

 

转载于:https://www.cnblogs.com/attila/p/10835847.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值