本文首发于公众号: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()

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

celery笔记九之task运行结果查看的更多相关文章

  1. 《Hadoop技术内幕》读书笔记——Task运行过程分析

    本文是董西成的Hadoop技术内幕一书的读书章节总结. 第八章 Task运行过程分析 所有Task需要周期性地向TaskTracker汇报最新进度和计数器值,而这正是由Reporter组件实现的,其中 ...

  2. 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9374935 作者:七十一雾央 新浪微博:http:// ...

  3. celery (二) task

    Task task 具有如下特点: task 可以在任何可调用的地方创建.它有双重角色: 定义了当task被调用时,会发送一个消息. 定义了当worker收到消息时会运行消息对应的函数 每个task都 ...

  4. Spark源码分析之八:Task运行(二)

    在<Spark源码分析之七:Task运行(一)>一文中,我们详细叙述了Task运行的整体流程,最终Task被传输到Executor上,启动一个对应的TaskRunner线程,并且在线程池中 ...

  5. C#线程学习笔记九:async & await入门二

    一.异步方法返回类型 只能返回3种类型(void.Task和Task<T>). 1.1.void返回类型:调用方法执行异步方法,但又不需要做进一步的交互. class Program { ...

  6. go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)

    目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...

  7. Django笔记九之model查询filter、exclude、annotate、order_by

    在接下来四五篇笔记中,将介绍 model 查询方法的各个细节,为我们的查询操作提供各种便利. 本篇笔记将介绍惰性查找.filter.exclude.annotate等方法,目录如下: 惰性查找 fil ...

  8. [Spark内核] 第36课:TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等

    本課主題 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...

  9. Elasticsearch笔记九之优化

    Elasticsearch笔记九之优化 ).get(); } curl命令可以在linux中建立一个定时任务每天执行一次,同样java代码也可以建立一个定时器来执行. 2:内存设置之前介绍过es集群有 ...

  10. 多线程学习笔记九之ThreadLocal

    目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...

随机推荐

  1. ChatGPT4实现前一天

    目录 提出需求 代码实现 需求分析 单元测试 等价类划分 决策表 软件测试作业,用ChatGPT4来帮个小忙,小划水,勿喷勿喷,近期有相关作业的同学看到我的文章,建议修改一下,别撞车了,哈哈哈~ 提出 ...

  2. 四月二十三号java基础知识

    1.异常是指在程序运行中由代码产生的一种错误2.按照错误的性质将错误分为语法错.语义错.和逻辑错三种3.语法错是有由于违反程序设计语言的语言规则而产生的错误,如标识符未标明.表达式中运算符与操作数类型 ...

  3. .NET无侵入自动化探针原理和主流实现

    前言 最近,我在微信公众号和博客园分享了一篇关于.NET微服务系统迁移至.NET 6.0的故事的文章,引起了许多读者的关注.其中,许多人对基于 OpenTelemetry .NET 的观测指标和无侵入 ...

  4. 开源后台管理系统解决方案 boot-admin 简介

    介绍 boot-admin 是一款采用前后端分离架构模式的后台管理框架.系统提炼自实际项目,兼具RuoYi-Vue前端分离版和Ruoyi-Cloud微服务版功能与技术特点. boot-admin 既有 ...

  5. Rainbond 结合 Jpom 实现云原生 & 本地一体化项目管理

    Jpom 是一个简而轻的低侵入式在线构建.自动部署.日常运维.项目运维监控软件.提供了: 节点管理:集群节点,统一管理多节点的项目,实现快速一键分发项目文件 项目管理:创建.启动.停止.实时查看项目控 ...

  6. pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)

    pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...

  7. Linux修改远程命令端口

    Linux修改远程命令端口 执行以下命令,修改sshd服务的配置文件 vi /etc/ssh/sshd_config 找到port,默认是注释了的 22 打开注释,将22改成想要的端口号 重启服务 s ...

  8. 武装你的WEBAPI-OData与DTO

    前面写了很多有关OData使用的文章,很多读者会有疑问,直接将实体对象暴露给最终用户会不会有风险?$expand在默认配置的情况下,数据会不会有泄露风险? 答案是肯定的,由于OData的特性,提供给我 ...

  9. 想打印k8s资源YAML结果搞懂了Client-Side & Server-Side Apply

    前言 由于查看k8s资源YAML时常看到沉长的YAML与手写的格式,相差甚远不利于阅读,经过探索官方文档,才理解什么是Client-Side & Server-Side Apply. 先看一下 ...

  10. 2023-03-08:x265的视频编码器,不用ffmpeg,用libx265.dll也行。请用go语言调用libx265.dll,将yuv文件编码成h265文件。

    2023-03-08:x265的视频编码器,不用ffmpeg,用libx265.dll也行.请用go语言调用libx265.dll,将yuv文件编码成h265文件. 答案2023-03-08: 使用 ...