celery笔记九之task运行结果查看
本文首发于公众号:Hunter后端
原文链接:celery笔记九之task运行结果查看
这一篇笔记介绍一下 celery 的 task 运行之后结果的查看。
前面我们使用的配置是这样的:
# settings.py
CELERY_RESULT_BACKEND = "redis://localhost/1"
是将 task 的运行结果保存在 redis 的第二个数据库(数据库索引从0开始)。
我们还可以将 task 的运行结果保存到 Django 的数据库,这一篇笔记将介绍如何查看 redis 和 Django 数据库中 task 运行的结果。
- 查看 redis 中的 task 结果
- 使用 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运行结果查看的更多相关文章
- 《Hadoop技术内幕》读书笔记——Task运行过程分析
本文是董西成的Hadoop技术内幕一书的读书章节总结. 第八章 Task运行过程分析 所有Task需要周期性地向TaskTracker汇报最新进度和计数器值,而这正是由Reporter组件实现的,其中 ...
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9374935 作者:七十一雾央 新浪微博:http:// ...
- celery (二) task
Task task 具有如下特点: task 可以在任何可调用的地方创建.它有双重角色: 定义了当task被调用时,会发送一个消息. 定义了当worker收到消息时会运行消息对应的函数 每个task都 ...
- Spark源码分析之八:Task运行(二)
在<Spark源码分析之七:Task运行(一)>一文中,我们详细叙述了Task运行的整体流程,最终Task被传输到Executor上,启动一个对应的TaskRunner线程,并且在线程池中 ...
- C#线程学习笔记九:async & await入门二
一.异步方法返回类型 只能返回3种类型(void.Task和Task<T>). 1.1.void返回类型:调用方法执行异步方法,但又不需要做进一步的交互. class Program { ...
- go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)
目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...
- Django笔记九之model查询filter、exclude、annotate、order_by
在接下来四五篇笔记中,将介绍 model 查询方法的各个细节,为我们的查询操作提供各种便利. 本篇笔记将介绍惰性查找.filter.exclude.annotate等方法,目录如下: 惰性查找 fil ...
- [Spark内核] 第36课:TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等
本課主題 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...
- Elasticsearch笔记九之优化
Elasticsearch笔记九之优化 ).get(); } curl命令可以在linux中建立一个定时任务每天执行一次,同样java代码也可以建立一个定时器来执行. 2:内存设置之前介绍过es集群有 ...
- 多线程学习笔记九之ThreadLocal
目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...
随机推荐
- CentOS&RHEL内核升级
在安装部署一些环境的时候,会要求内核版本的要求,可以通过YUM工具进行安装配置更高版本的内核,当然更新内核有风险,在操作之前慎重,严谨在生产环境操作! 安装源 # 为 RHEL-8或 CentOS-8 ...
- python入门教程之八列表,字典,字符串,集合常用操作
一列表常用方法 Python包含以下函数: 序号 函数 1 cmp(list1, list2)比较两个列表的元素 2 len(list)列表元素个数 3 max(list)返回列表元素最大值 4 mi ...
- [Linux]mysql错误总结-ERROR 1067 (42000): Invalid default value for TIMESTAMP
MySQL的TIMESTAMP类型的默认值设置无效. 0 使用环境描述 Linux CentOS 7.8.2003 x86/64bit MySQL: 5.7.24 (mysql --version / ...
- 基于SqlSugar的开发框架循序渐进介绍(25)-- 基于SignalR实现多端的消息通讯
基于ASP.NET Core SignalR 可以实现客户端和服务器之间进行即时通信.本篇随笔介绍一些SignalR的基础知识,以及结合对SqlSugar的开发框架的支持,实现SignalR的多端处理 ...
- Redis使用之缓存清除
1. Redis到期缓存清除策略(三种) 定时删除:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除. 优点:定时删除策略对内存是友好的,通过 ...
- vue3+vant创建移动端项目,实战项目常见采坑记录
前言: 产品背景介绍 我所做的这个项目,刚开始是没有移动端需求的,等PC端做完了上线使用了几个月后,突然有一天产品经理找到我说是要做一个在PC端添加一个快速注册入口,用手机微信扫二位码进入移动端注册页 ...
- 安装Zookeeper和Kafka集群
安装Zookeeper和Kafka集群 本文介绍如何安装Zookeeper和Kafka集群.为了方便,介绍的是在一台服务器上的安装,实际应该安装在多台服务器上,但步骤是一样的. 安装Zookeeper ...
- python pyinstaller库
简要 pyinstaller模块主要用于python代码打包成exe程序直接使用,这样在其它电脑上即使没有python环境也是可以运行的. 用法 一.安装 pyinstaller属于第三方库,因此在使 ...
- [Pytorch框架] 2.2 深度学习基础及数学原理
文章目录 2.2 深度学习基础及数学原理 2.2.1 监督学习和无监督学习 2.2.2 线性回归 (Linear Regreesion) 2.2.3 损失函数(Loss Function) nn.L1 ...
- String、StringBuilder、StringBuffer使用场景
String:加了final修饰,长度不可变,每次修改会创建新String:操作少量数据或者不需要操作数据时使用. StringBuilder:长度可变,线程不安全:在需要频繁操作数据且不需要考虑线程 ...