首页 > 其他分享 >celery的快速使用

celery的快速使用

时间:2024-01-29 19:11:07浏览次数:22  
标签:task app celery 使用 print import 快速 id

celery的快速使用

1.安装celery模块

pip install celery

 

2.书写demo.py文件

from celery import Celery
import time
broker = 'redis://127.0.0.1:6379/1'
backend = 'redis://127.0.0.1:6379/2'
app = Celery('app', broker=broker, backend=backend)

# 写任务
@app.task
def add(a, b):
    time.sleep(3)  # 模拟任务延迟
    return a + b

 

3.另写一个文件提交任务

res=add.delay(4,5)
print(res)  # 打印任务id号

 

4.启动worker

windows系统运行:

首先需要安装eventlet模块

pip3 install eventlet

运行:

celery -A 文件名(demo) worker -l info -P eventlet

 

非windows系统运行:mac  linux

celery -A 文件名(demo) worker -l info

 

5.使用代码查询结果

from demo import app
from celery.result import AsyncResult

# 打印的任务id号
id = '17bf03ad-a1e6-49d1-a182-794bd3e96b74'
if __name__ == '__main__':
    a = AsyncResult(id=id, app=app)
    if a.successful():
        result = a.get() # hello world
        print(result)
    elif a.failed():
        print('任务失败')
    elif a.status == 'PENDING':
        print('任务等待中被执行')
    elif a.status == 'RETRY':
        print('任务异常后正在重试')
    elif a.status == 'STARTED':
        print('任务已经开始被执行')

 

 

celery使用包结构

######celery.py######

from celery import Celery
#1 实例化得到对象
broker = 'redis://127.0.0.1:6379/1'
backend = 'redis://127.0.0.1:6379/2'

# 任务文件需要注册
app = Celery('app', broker=broker, backend=backend,include=['celery_task.order_task','celery_task.user_task'])
2 写任务 ——以后各种类型任务,需要单独写在py文件中

 

######order_task.py 和 user_task.py######

order_task.py

import time
from .celery import app
@app.task
def cancel_order(order_id):
    time.sleep(2)
    return '订单:%s取消成功' % order_id

 

user_task.py

import time
from .celery import app
@app.task
def send_sms(phone, code):
    time.sleep(1)
    return '手机号:%s,发送验证码:%s,成功' % (phone, code)

 

######提交任务文件######

# 调用发送短信的任务
from celery_task.user_task import send_sms
# 携带手机号和验证码
res=send_sms.delay('15000000000',8888)
# 打印任务id
print(res)

 

######启动worker文件######

celery -A celery_task worker -l info -P eventlet

 

######查询结果文件######

# 使用代码,查询结果
from celery_task.celery import app
from celery.result import AsyncResult

# 输入任务id号
id = '46b26c73-62ae-403c-ba62-e469f2f8c69f'
if __name__ == '__main__':
    a = AsyncResult(id=id, app=app)
    if a.successful():
        result = a.get() # hello world
        print(result)
    elif a.failed():
        print('任务失败')
    elif a.status == 'PENDING':
        print('任务等待中被执行')
    elif a.status == 'RETRY':
        print('任务异常后正在重试')
    elif a.status == 'STARTED':
        print('任务已经开始被执行')

 

标签:task,app,celery,使用,print,import,快速,id
From: https://www.cnblogs.com/wellplayed/p/17995138

相关文章

  • 【TiDB 实战】使用 HyBench 测试 TiDB
    本文将介绍如何使用HyBench对TiDB进行测试,并简述HyBench适配TiDB的注意事项。Hybench是一款由中国软件评测中心、清华大学联合牵头,多家公司共同研发的HTAP数据库基准测试工具。TiDB是一款兼容MySQL的数据库,Hybench已在Gitee开源,支持MySQL数据库,通过修改HyBe......
  • 使用 AI 构建面向未来的 DevOps
    从去年底开始,生成式AI(AIGC) 作为热门话题,深入影响到了IT行业的各个领域和所有从业者。DevOps 是通过持续集成、持续部署、持续交付的方式,将开发和运营更好地整合在一起的流程,它的发展与架构的演进是紧密相连的。当前的架构逐渐在向微服务化的方向发展,出现了许多新的技术,如容......
  • C# 使用自定义特性标注类的方法,直接在当前类中让Main函数调用它
    有的时候我们想要再Main执行一些代码,如果直接在里面写的话,下次再想用的时候就会把之前的代码删掉,好不容易写的代码不想删掉于是我们可以将这些代码写到类文件中,想要执行了,就在Main中调用该类的方法,但是有的时候我们又懒的去Main函数指定的,有没有什么办法能直接在新类中就能指定......
  • Django 中使用ModelForm生成HTML标签
    在Django中,使用ModelForm来生成HTML表单标签是一种常见且高效的做法。ModelForm可以自动根据模型的字段生成对应的表单字段,这大大简化了表单的创建和处理过程。以下是如何在Django中使用ModelForm来生成HTML标签的基本步骤:步骤1:创建ModelForm首先,你需要为你的模型......
  • MSE Nacos 配置变更审计平台使用指南
    作者:孙立(涌月)、邢学超(于怀)、李艳林(彦林)配置审计平台简介Nacos[1]作为一款业界主流的微服务注册中心和配置中心,管理着企业核心的配置资产,由于配置变更的安全和稳定诉求越来越高,因此我们提供了安全和可追溯性保障机制。配置变更的途径主要包括控制台手动发布和使用NacosSDK客户......
  • docker 快速入门实操教程
    docker快速入门实操教程docker,启动!如果安装好docker不知道怎么使用,不理解各个名词的概念,不太了解各个功能的用途,这篇文章应该会对你有帮助。前置条件:已经安装docker并且docker成功启动。最终目的:使用docker替换本地安装的程序并迁移数据(redis、MySQL)。理解概念docker官方提......
  • 如何使用保留可探测字段参数的方法解决视频监控管理平台EasyCVR无法启动的问题
    有用户反馈,在使用EasyCVR时出现启动失败,服务无法使用的情况。收到用户反馈后,技术人员立即开展解决,以下为解决步骤:注:此解决方法为保留hardware_version可被探测的字段参数。1、首先查看报错日志:2、由上图可见,报错为LocalMachineCheckError!本地机器检查错误!随后检查配置文件,是否因......
  • 如何使用保留可探测字段参数的方法解决视频监控管理平台EasyCVR无法启动的问题
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • swagger的使用
    swagger的使用1、导入依赖<!--swagger依赖--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>......
  • MSE Nacos 配置变更审计平台使用指南
    作者:孙立(涌月)、邢学超(于怀)、李艳林(彦林)配置审计平台简介Nacos[1]作为一款业界主流的微服务注册中心和配置中心,管理着企业核心的配置资产,由于配置变更的安全和稳定诉求越来越高,因此我们提供了安全和可追溯性保障机制。配置变更的途径主要包括控制台手动发布和使用NacosSDK......