首页 > 其他分享 >Celery快速使用

Celery快速使用

时间:2024-05-18 12:42:11浏览次数:20  
标签:celery app redis Celery result 使用 print import 快速

安装

# 0 创建Python项目

# 1 创建虚拟环境

# 2 安装celery
pip install celery

# 3 安装redis(消息队列和结果存储使用redis)
pip install redis

# 4 安装eventlet(win 平台,如果是mac,linux不需要)
pip install eventlet

快速使用

celery_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('celery_test', broker=broker, backend=backend)


@app.task
def add(n, m):
    time.sleep(2)
    print('n+m的结果:%s' % (n + m))
    return n + m


@app.task
def send_email(mail='[email protected]'):
    print('模拟发送延迟--开始')
    time.sleep(2)
    print('模拟发送延迟--结束')
    return '邮件发送成功:%s' % mail

add_task.py--提交异步任务

from celery_demo import add,send_email


##1 同步调用
res=send_email()
print(res)

# 2 异步调用
res = add.delay(10, 20)
# 返回任务唯一id
print(res.id)

查看提交的任务

image-20240518122042190

让worker执行任务

# 通过命令启动worker
# win启动
celery -A main worker -l info -P eventlet
# mac linux
celery -A main worker -l info 

image-20240518122051678

查看结果

# 1 直接看redis 有数据

# 2 通过代码,拿到结果
from celery_demo import app
from celery.result import AsyncResult
id = 'd0ae78c8-9a8e-4f93-9d32-b17d4e295fe9'
if __name__ == '__main__':
    result = AsyncResult(id=id, app=app)
    if result.successful():
        result = result.get()
        print(result)
    elif result.failed():
        print('任务失败')
    elif result.status == 'PENDING':
        print('任务等待中被执行')
    elif result.status == 'RETRY':
        print('任务异常后正在重试')
    elif result.status == 'STARTED':
        print('任务已经开始被执行')

image-20240518122100119

标签:celery,app,redis,Celery,result,使用,print,import,快速
From: https://www.cnblogs.com/Hqqqq/p/18199221

相关文章

  • 使用django_celery_beat在admin后台配置计划任务
    使用步骤安装包pipinstalldjango-celery-beatapp注册app注册INSTALLED_APPS=[....'django_celery_beat',]配置文件:屏蔽原来的调度器CELERY_BEAT_SCHEDULER='django_celery_beat.schedulers.DatabaseScheduler'设置时区LANGUAGE_CODE='z......
  • Flower 监控celery任务
    Flower监控celery任务如果不想通django的管理界面监控任务的执行,还可以通过Flower插件来进行任务的监控。Flower的界面更加丰富,可以监控的信息更全Flower是一个用于监控和管理Celery集群的开源Web应用程序。它提供有关Celeryworkers和tasks状态的实时信息功能【1】......
  • Celery admin监视任务
    在控制台监控任务执行情况,还不是很方便,最好是能够通过web界面看到任务的执行情况,如有多少任务在执行,有多少任务执行失败了等这个Celery也是可以做到了,就是将任务执行结果写到数据库中,通过web界面显示出来。这里要用到django-celery-results插件。通过插件可以使用Django的orm作......
  • Windows Security Baselines(安全基线指南) 是由微软提供的一个安全配置集合,旨在帮助组
    安全基线指南-WindowsSecurity|MicrosoftLearnWindowsSecurityBaselines(安全基线)是由微软提供的一个安全配置集合,旨在帮助组织和管理员快速部署一套推荐的安全设置,以增强Windows操作系统及其组件的安全性。这些基线覆盖了操作系统本身、MicrosoftEdge浏览器、Inter......
  • elementUI 使用 el-select 的远程搜索功能,导致数据无法回显怎么解决?
    问题:解决方法:在数据初始化的时候将获取到的数据做进一步的处理,进行本地select组件的一个添加constlabels=[];constvalues=[];res.data.rows.forEach((ele)=>{labels.push(ele.buildName);values.push(ele.buildCode)......
  • restcontroller中使用delete请求发送带参路径报错
    报错内容:Resolved[org.springframework.web.HttpRequestMethodNotSupportedException:Requestmethod'DELETE'notsupported]具体情景:postman中发送的路径: 每次用这个路径发送delete请求都报错,但是用这个路径发送get请求做查询却没问题,真的让我苦恼好久 解决:因为HttpC......
  • 一对一视频app开发,“锁”的合理使用很重要
    一对一视频app开发,“锁”的合理使用很重要,比如公平锁和非公平锁。一、基本概念公平锁:线程按照到来的先后顺序,排队等待使用资源。非公平锁:线程不一定按照先后顺序使用资源,而是可能出现“插队”的情况。ReentrantLock的公平锁和非公平锁synchronized是一种非公平锁,而Ree......
  • Asp-Net-Core开发笔记:使用ActionFilterAttribute实现非侵入式的参数校验
    前言在现代应用开发中,确保API的安全性和可靠性至关重要。面向切面编程(AOP)通过将横切关注点(如验证、日志记录、异常处理)与核心业务逻辑分离,极大地提升了代码的模块化和可维护性。在ASP.NETCore中,利用ActionFilterAttribute可以方便地实现AOP的理念,能够以简洁、高效的方式进行自......
  • 使用puppeteer url转换pdf中文不显示
    本来正在优化一个url转pdf的node服务,项目是使用puppeteer进行转换。功能优化提测后,发现转换后的pdf中文都不显示了。而本身这次优化没有涉及到转换本身相关的内容,这就很奇怪,而且本地转换都很正常。一般中文不显示,很可能是缺少中文字体导致的,于是看了项目中的Dockerfil......
  • 工业福利!用.NET快速开发物联网扫码器设备的通用扫码功能
    不管你是用.netframework还是用.netcore或者更高版本.net环境,这篇文章也许都能帮到你!因为接下来我会提供一个简单粗暴的方式,来快速实现多款扫码器的通用扫码功能。目前本地测试过的包括基恩士系列、康耐视系列、以及其他支持以太网通信的多款小众厂家等。下面开始重点操作:首先......