码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • celery笔记九之task运行结果查看


    合集 - Celery笔记(9)
    1.celery笔记一之celery介绍、启动和运行结果跟踪06-012.celery笔记二之建立celery项目、配置及几种加载方式06-023.celery笔记三之task和task的调用06-134.celery笔记四之在Django中使用celery06-155.celery笔记五之消息队列的介绍06-216.celery笔记六之worker介绍06-237.celery笔记七之周期/定时任务及crontab定义06-258.celery笔记八之数据库操作定时任务06-26
    9.celery笔记九之task运行结果查看06-29
    收起

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

  • 相关阅读:
    (二)笔记.net core学习之依赖注入、服务注册
    __builtin_expect(x,0)
    rabbitmq资料汇总
    双十一购物指南:电视盒子哪个牌子好?口碑电视盒子品牌排行榜
    Hive sql 行列转换(行转列,列转行)
    基于SSM的星空游戏购买下载平台
    守护绿色屏障:智能高压森林应急消防泵|恒峰智慧科技
    软件测试/测试开发丨利用人工智能ChatGPT批量生成测试数据
    企业IT机房中使用什么灭火器?
    基于区块链技术的疫情管理系统
  • 原文地址:https://www.cnblogs.com/hunterxiong/p/17515319.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号