本文首发于公众号: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. window设置开启启动程序的几种方式比较

    一.设置开机启动项 进入启动文件夹,拷贝程序的快捷方式到这个文件夹即可. 可在任务管理器--启动,查看是否设置成功 启动时间:用户登陆之后. 二.使用计划任务设置自启 进入计划任务界面进行配置,按wi ...

  2. python之sys库

    sys --- 系统相关的参数和函数 该模块提供了一些变量和函数.这些变量可能被解释器使用,也可能由解释器提供.这些函数会影响解释器.本模块总是可用的. sys.abiflags 在POSIX系统上, ...

  3. Python多线程与GIL锁

    Python多线程与GIL锁 python多线程 Python的多线程编程可以在单个进程内创建多个线程来同时执行多个任务,从而提高程序的效率和性能.Python的多线程实现依赖于操作系统的线程调度器, ...

  4. C++ 标准库 sort() / stable_sort() / partial_sort() 对比

    C++ STL标准库中提供了多个用于排序的Sort函数,常用的包括有sort() / stable_sort() / partial_sort(),具体的函数用法如下表所示: 函数 用法 std::s ...

  5. 在IIS 搭建FTP站点

    最近在项目中需要用到FTP,需要将生成的文件通过FTP上传网站. 在此记录下. FTP SSL设置,需要允许SSL连接. FTP 身份验证,匿名身份验证需要启用. FTP 授权规则,如果没有特殊情况允 ...

  6. Java SpringBoot 7z 压缩、解压

    Java SpringBoot 7z 压缩.解压 cmd 7z 文件压缩 7z压缩测试 添加依赖 <dependency> <groupId>org.apache.common ...

  7. 发现Mysql的主从数据库没有同步,差点凉凉了

    摘要:今天发现Mysql的主从数据库没有同步,瞬间整个人头皮发麻. 本文分享自华为云社区<糟了,生产环境数据竟然不一致,人麻了!>,作者:冰 河 . 今天发现Mysql的主从数据库没有同步 ...

  8. Go中的有限状态机FSM的详细介绍

    1.FSM简介 1.1 有限状态机的定义 有限状态机(Finite State Machine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转移条件. 状态机有三个组成部分:状态(Stat ...

  9. node服务容器 serve 和 http-serve

    参考:https://www.cnblogs.com/leee/p/5502727.html 项目打包文件本地起serve运行 不能直接双击index.html文件直接运行 放到http容器里运行 s ...

  10. 《HelloGitHub》第 85 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...