首页 > 其他分享 >celery笔记九之task运行结果查看

celery笔记九之task运行结果查看

时间:2023-06-29 22:12:17浏览次数:57  
标签:task 结果 redis results 笔记 django celery

本文首发于公众号:Hunter后端
原文链接:celery笔记九之task运行结果查看

这一篇笔记介绍一下 celery 的 task 运行之后结果的查看。

前面我们使用的配置是这样的:

# settings.py 

CELERY_RESULT_BACKEND = "redis://localhost/1"

是将 task 的运行结果保存在 redis 的第二个数据库(数据库索引从0开始)。

我们还可以将 task 的运行结果保存到 Django 的数据库,这一篇笔记将介绍如何查看 redis 和 Django 数据库中 task 运行的结果。

  1. 查看 redis 中的 task 结果
  2. 使用 Django 数据库保存 task 结果

1、查看 redis 中的 task 结果

在 redis 中查看运行的结果,可以直接进入 redis 的交互界面,我这里启动 redis 是使用的 docker,所以命令如下:

docker exec -it container_id redis-cli

其中,container_id 为启动的 docker 容器的 id。

进入之后,选择第二个数据库,可以通过查看 keys * 命令查看所有 key:

select 1
keys *

会输出类似如下数据:

 1) "celery-task-meta-5592a992-2035-49b2-9af2-3e79e50a22a1"
 2) "celery-task-meta-1fc394c2-fb2b-4a85-bcee-a27fe069ec39"
 3) "celery-task-meta-4bff6f33-7ff7-43e7-b844-719018ea1d3d"
 4) "celery-task-meta-fb582658-3eac-471e-8b68-b1248f7b8596"

所有 task 运行的结果都会被冠以 celery-task-meta- 前缀,后面加上的是 task_id。

因为每条数据都是存储的 string 类型的数据,所以可以直接使用 get 命令获取结果:

get celery-task-meta-5592a992-2035-49b2-9af2-3e79e50a22a1

返回的结果会有 状态字段 status,函数返回结果 result,任务id task_id 等信息。

2、使用 Django 数据库保存 task 结果

首先我们需要安装一个依赖:

pip3 install django-celery-results

然后在 settings.py 的 INSTALLED_APPS 里添加:

INSTALLED_APPS = [
    …,
    'django_celery_results',
]

通过 migrate 创建相应的表:

python3 manage.py migrate django_celery_results

执行上面的命令后,数据库会多出三张表:django_celery_results_chordcounter,django_celery_results_groupresult,django_celery_results_taskresult

目前我们 task 的结果都会存储在 django_celery_results_taskresult 表中。

修改 CELERY_RESULT_BACKEND 的值,把原来指向 redis 的去掉:

# settings.py

# CELERY_RESULT_BACKEND = "redis://localhost/1"
CELERY_RESULT_BACKEND = 'django-db'

然后我们正常启动 worker,然后执行一个延时任务,就可以看到在 django_celery_results_taskresult 表中多出一条数据,那就是保存的结果:

from blog.tasks import add
add.delay(1, 2)

除了使用 workbench,navicat 等工具查看数据之外,我们还可以使用命令查看 task 运行的结果:

from django_celery_results.models import TaskResult
TaskResult.objects.count()

如果想获取更多后端相关文章,可扫码关注阅读:

image

标签:task,结果,redis,results,笔记,django,celery
From: https://www.cnblogs.com/hunterxiong/p/17515319.html

相关文章

  • Celery
    celery执行异步任务,延迟任务和定时任务执行异步任务-导入异步任务的函数-函数.delay(参数)执行延迟任务fromdatetimeimportdatetime,timedeltaeta=datetime.utcnow()+timedelta(seconds=10)导入异步任务的函数函数.apply_async(args=['122345421',44......
  • celery
    celery介绍架构和安装:celery:分布式的异步任务框架,主要用来做:-异步任务-延迟任务-定时任务---》如果只想做定时任务,可以不使用celery,有别的选择celery框架,原理1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket)2)celery服务为为其他......
  • celery 之 celery介绍架构和安装、celery执行异步任务、包结构celery、celery执行
    目录一、celery介绍架构和安装1、celery:分布式的异步任务框架,主要用来做:2、celery框架,原理3、celery架构4、安装celery5、celery不支持win,所以想再win上运行,需要额外安装eventlet二、celery执行异步任务基本使用1再虚拟环境中装celery和eventlet2写个py文件,实例化得到app对象......
  • 11celery介绍架构和安装,celery执行异步任务,包结构celery,celery执行延迟任务和定时任务
    1celery介绍架构和安装#celery:分布式的异步任务框架,主要用来做: -异步任务-延迟任务-定时任务---》如果只想做定时任务,可以不使用celery,有别的选择#celery框架,原理1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket)2)celery服务为为其他项目......
  • C语言笔记
    C语言学习笔记linux常用指令pwd:查看当前路径cd:进入某个文件夹cd文件夹名cd..——返回上一级cd/——进入根目录cd/home/——进入到相对目录cd~——进入到当前用户......
  • TypeScript学习笔记
    一、类型①可以使用 | 来连接多个类型(联合类型) ② 类型断言,可以用来告诉解析器变量的实际类型 ③ {}用来指定对象中可以包含哪些属性 ④函数结构的类型声明 ⑤数组的类型声明⑥元组,元组就是固定长度的数组 ⑦enum枚举⑧类别的别名 二、编......
  • celery
    1Celery架构,介绍#Celery:芹菜(跟翻译没有任何关系),分布式异步任务框架,框架(跟其他web框架无关)#Celeryisaprojectwithminimalfunding,sowedon’tsupportMicrosoftWindows.Pleasedon’topenanyissuesrelatedtothatplatform.#架构 -broker:任务中间件,用户提......
  • celery介绍
    简介Celery是使用python编写的分布式任务调度框架。celery能做什么Celery是一个强大的分布式任务队列框架,它可以与Python应用程序一起使用,提供了异步任务处理和分布式消息传递的能力。以下是Celery框架的一些主要功能和用途:异步任务处理Celery可以将耗时的任务放......
  • 搜索学习笔记
    MeetInTheMiddle折半搜索将需要搜索的数据集分成两部分,在两部分用\(f(n/2)\)的时间复杂度分别搜索,之后用\(g(n)\)的时间复杂度合并。如果\(g(n)\)和\(f(n/2)\)同级,那么解决问题的时间复杂度就能折半。......
  • AI绘画StableDiffusion:云端在线版免费使用笔记分享-Kaggle版
    玩AI绘画(SD),自己电脑配置不够?今天给大家介绍一下如何baipiao在线版AI绘画StableDiffusion。Kaggle是世界上最大的数据科学社区,拥有强大的工具和资源,可帮助您实现数据科学目标。(每周可以免费使用30个小时)。文末有更多相关AI资源。 文章较长,可阅读原文享F受更佳阅读体验,以及获......