IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> celery的简单测试,以及使用redis作为broker的时候,是用redis的哪种数据类型 -> 正文阅读

[大数据]celery的简单测试,以及使用redis作为broker的时候,是用redis的哪种数据类型

1、首先两个文件

<1> tasks (一般名称固定)

tasks.py

from celery import Celery
import time

# app = Celery('tasks')
app = Celery('celery_name',
             backend='redis://127.0.0.1:6379/3',
             broker='redis://127.0.0.1:6379/2')  # 配置好celery的backend和broker

# app.config_from_object('tasks') #config是本目录下的config.py文件名,指定自己的目录即可


@app.task(name='func')  # 这里需要注册任务, name参数的值是任务名称,注意是字符串
def func(x, y):
    time.sleep(3)
    print('已经运行。。')
    return x + y


<2>第二个文件是异步任务调度的入口?

celery_test_main.py
from tasks import func
import time


for i in range(100):
    func.delay(2, i)
    time.sleep(1)

2、启动异步

celery -A tasks worker --loglevel=info

3、运行celery_test_main.py文件添加任务

这里可以看到redis 2 号库是这样的

?其实任务主要存在celery里面,这个key是个列表

?列表里面有很多任务,里面的某一个元素是字符串的这种数据结构:

{
	"body": "W1syLCA5OV0sIHt9LCB7ImNhbGxiYWNrcyI6IG51bGwsICJlcnJiYWNrcyI6IG51bGwsICJjaGFpbiI6IG51bGwsICJjaG9yZCI6IG51bGx9XQ==",
	"content-encoding": "utf-8",
	"content-type": "application/json",
	"headers": {
		"lang": "py",
		"task": "func",
		"id": "3fb1edf9-9b4e-4671-a1a4-c9a23b68a2b8",
		"shadow": null,
		"eta": null,
		"expires": null,
		"group": null,
		"group_index": null,
		"retries": 0,
		"timelimit": [null, null],
		"root_id": "3fb1edf9-9b4e-4671-a1a4-c9a23b68a2b8",
		"parent_id": null,
		"argsrepr": "(2, 99)",
		"kwargsrepr": "{}",
		"origin": "gen15587@iZbp1j4bsah4npvyegtlioZ",
		"ignore_result": false
	},
	"properties": {
		"correlation_id": "3fb1edf9-9b4e-4671-a1a4-c9a23b68a2b8",
		"reply_to": "3bfd1eca-d23d-3bfe-8ce9-29f2dcbc27be",
		"delivery_mode": 2,
		"delivery_info": {
			"exchange": "",
			"routing_key": "celery"
		},
		"priority": 0,
		"body_encoding": "base64",
		"delivery_tag": "46650cc0-690c-43f1-b97d-6881ba9b358f"
	}
}

4、当任务都执行完毕之后,这个celery的列表就不存在了

5、而如果你把celery服务停止之后,运行celery_test_main.py文件,依然是能在redis的2号库添加任务;可以看到任务堆积了

而任务貌似是不会过期的:

?6、重启异步可以看到仍然可以正常执行未执行的任务

7、测试用3号库当作 backend 存储任务结果的库,里面结构是这样的

可以看到任务执行的成功与否的状态和执行完成的时间;以及是哪个任务(task_id)

8、可以再开一个终端再以同样的命令启动一个worker

可以看到启动两个更快,而且分别执行不同的任务(任务不会重复执行,取到哪个执行哪个worker从队列中取到哪个执行哪个)

9、如果任务执行失败看看是怎样的?

<1>修改下代码,故意出错

修改之后依然能成功执行,我纳闷了,是不是该重启异步?重启异步试试

重启一个异步之后,只有重启的这个会失败,另外一个没有重启的异步还能成功:

?

?结果库:

有失败的,有成功的,看来修改完异步任务的话,要重启worker的,不然不生效啊

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:05:11  更:2021-09-05 11:05:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:21:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码