关于后端:celery笔记九之task运行结果查看

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

如果想获取更多后端相干文章,可扫码关注浏览:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理