云平台关键技术 | 使用异步框架 celery 后台执行linux命令的实例

准备工作

(1) 环境

@J1 server, CentOS7.9$ which gcc
/home/wangjl/soft/gcc-12.3.0/bin/gcc$ which python3
/home/wangjl/soft/python3/python-3.10.14/bin/python3$ gcc --version
gcc (GCC) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.$ python3 -V
Python 3.10.14

(2) 准备
$ pip3 install celery
$ pip3 install redis
$ pip3 list | grep celery
celery 5.4.0
$ pip3 list | grep redis
redis 5.0.5

启动redis服务:
$ redis-server --version
Redis server v=6.2.6 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=3ee1339f93e3f95a
$ redis-server

76382:M 12 Jun 2024 16:54:15.813 * Ready to accept connections
启动服务后才能连接:
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> quit
$

1. 定义任务

$ cat task02.py
from celery import Celery
import subprocess#app = Celery('tasks', broker='amqp://guest@localhost//')
app = Celery('tasks_02', broker='redis://localhost:6379/0', backend='redis://localhost:6379/1')@app.task
def run_command(cmd):return subprocess.check_output(cmd, shell=True)

解释:run_command是一个Celery任务,它接受一个命令字符串cmd并使用subprocess.check_output来执行它。

2. 启动任务

$ celery -A task02 worker --loglevel=info

注意,task02是py文件的文件名,不含py后缀名。

3. 在代码中异步执行Linux命令

$ python3
from task02 import run_command# 异步执行命令
result = run_command.apply_async(args=['ls -la'])# 如果需要,你可以获取结果
print(result.get())

4. 查看任务状态

>>> result.id
'588b3799-c424-464f-a2ef-125c87751643'
>>> result.status
'SUCCESS'也可以记录id,根据id查询任务执行状态:
from task02 import app
from celery.result import AsyncResult # 导入AsyncResult类
async_result = AsyncResult(id=result.id, app=app)>>> async_result
<AsyncResult: 588b3799-c424-464f-a2ef-125c87751643>
>>> async_result.status
'SUCCESS'

5. 异步执行耗时任务时,记录id到数据库,根据id查看状态,根据状态显示结果

# 异步执行耗时命令
result2 = run_command.apply_async(args=['sleep 10 && pwd && ls -la'])
task_id=result2.id #记录id到数据库
>>> task_id
'6fba0cfa-fa9a-46dd-b661-1708c55376b8'# 根据id获取对象
async_result = AsyncResult(id=task_id, app=app)
# 根据状态获取结果
if "SUCCESS" == async_result.status:print(async_result.get())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机msvcp100.dll丢失怎么办,分享5种亲测有效的解决方法

电脑已经成为我们生活中不可或缺的一部分。然而&#xff0c;在使用电脑的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;其中之一就是电脑提示缺失msvcp100.dll。这个问题可能会让我们感到困惑和烦恼&#xff0c;但是只要我们了解其原因并采取相应的解决方法&#xff0…

oracle 自动优化SYS_AUTO_SQL_TUNING_TASK操作

1、查询SYS_AUTO_SQL_TUNING_TASK在执行什么任务 select execution_name,status,execution_start,execution_end from dba_advisor_executions where task_nameSYS_AUTO_SQL_TUNING_TASK order by execution_start desc; select * from DBA_ADVISOR_SQLSTATS where execution_n…

数据仓库学习之hbase-2.2.7分布式搭建

hbase-2.2.7分布式搭建 1、上传解压配置环境变量 # 1、解压 tar -xvf hbase-2.2.7-bin.tar.gz.gz# 2、配置环境变量 vim /etc/profile# 3、在最后增加配置 export HBASE_HOME/usr/local/soft/hbase-2.2.7 export PATH$PATH:$HBASE_HOME/bin# 4、使环境变量剩下 source /etc/p…

Java常见规范及易忘点

文章目录 命名-注释-格式命名注释格式 语法规范易错点 命名-注释-格式 命名 类&#xff0c;接口&#xff0c;枚举&#xff0c;注解名用大驼峰命名 方法名&#xff0c;变量名小驼峰 静态常量全大写&#xff0c;下划线_分割 boolean类型 isError 小驼峰&#xff0c;不能isNo…

利用API推动业务创新

在数字化时代&#xff0c;企业不断创新以求生存和发展。API&#xff08;应用程序编程接口&#xff09;作为一种强大的技术工具&#xff0c;为业务创新提供了无限的可能性。通过正确地开发和应用API&#xff0c;企业能够打造生态系统&#xff0c;开拓新市场&#xff0c;提升用户…

Go AfterFunc 不触发

前言 函数原型为&#xff1a; func AfterFunc(d Duration, f func()) *TimerGo 的 time.AfterFunc 的作用是等待指定的时间间隔&#xff0c;然后在它自己的 goroutine 中调用 f。 现在有一个问题&#xff0c;我明明调用了 AfterFunc&#xff0c;但是它还没调用我指定的函数&…

FPGA+金融|硬件行情加速系统 打造极速交易场景

会议时间&#xff1a;2024年06月20日&#xff08;周四&#xff09;下午13:50 FPGA金融|硬件行情加速系统 打造极速交易场景_中科亿海微_芯有灵犀 智创未来

Python学习笔记12 -- 有关布尔值的详细说明

一、布尔表达式 最终值为true 或者false 二、常见形式&#xff1a; 1、常量&#xff1a;true false 2、比较运算&#xff1a; and &#xff01; 3、复合运算&#xff1a; and and or 4、其他 例&#xff1a;检测闰年&#xff1a; def specialYearMine(year):if (year%4 …

Elasticsearch集群运维,重平衡、分片、宕节点、扩容

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 参考 探索集群 Elasticsearch 中文文档 https://www.elastic.co/guide/en/elasticsearch/reference…

方差,标准差,CPK指标数据分析 (使用SQL做数据分析)

以下SQL语句&#xff0c;使用sqlserver数据库 方差的计算公式为&#xff1a; 方差 [(x1 - 平均数)^2 (x2 - 平均数)^2 … (xn - 平均数)^2] / n 其中 x1、x2、…、xn 是样本中的各个数据&#xff0c;n 是样本数量。 SELECT AVG(valu) AS avg_valu,COUNT(valu) AS cnt,SUM…

STM32高级控制定时器(STM32F103):TIM1和TIM8介绍

目录 概述 1 认识TIM1和TIM8 2 TIM1和TIM8的特性 3 TIM1和TIM6时基和分频 3.1 时基单元 3.2 预分频 3.3 时基和分频相关寄存器 3.3.1TIMx_CR1 3.3.2 TIMx_PSC 概述 本文主要介绍STM32高级定时器TIM1和TIM8的功能&#xff0c;还介绍了与之相关的寄存器的配置参数。包括…

SPOOL

-----How to Pass UNIX Variable to SPOOL Command (Doc ID 1029440.6) setenv只有csh才有不行啊PROBLEM DESCRIPTION: You would like to put a file name in Unix and have SQL*Plus read that file name, instead of hardcoding it, because it will change.You want to pa…

快速排序 -非递归版-双指针版

个人主页点这里~ 非递归法: 快速排序的非递归实现涉及到使用一个栈来模拟递归调用栈。 因为递归调用内存的栈区一般只有8M,如果数据很多则容易栈溢出(不过现在硬件基本不会),而使用数据结构的栈来模拟实现递归是调用堆区,一般右2G. //得到key int QuickSort1(int* a, int lef…

Sui Bridge在测试网上线并推出10万SUI激励计划

是一种为Sui设计的原生桥接协议&#xff0c;专门用于在Sui与其他网络之间桥接资产和数据。今天&#xff0c;Sui Bridge宣布在测试网上线。作为一种原生协议&#xff0c;Sui Bridge能够在Ethereum和Sui之间轻松且安全地转移ETH、wBTC、USDC和USDT&#xff0c;使其成为Sui基础设施…

如果R是唯一析因整环,那么R[x]也是唯一析因整环

【定义1】商域 如果 R R R是整环&#xff0c;那么则 R R R上的商域 K R K_{R} KR​定义为 K R { a b ∣ a , b ∈ R , b ≠ 0 } K_{R} \left\{ \frac{a}{b}|a,b \in R,b \neq 0 \right\} KR​{ba​∣a,b∈R,b0} 其中 a b a ′ b ′ ∈ K R ⇔ a b ′ a ′ b ∈ R \frac…

MYSQL 三、mysql基础知识 4(存储过程与函数)

MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起&#xff0c;应用程序无须关注存储过程和函数内部复杂的SQL逻辑&#xff0c;而只需要简单地调用存储过程和函数即可。 一、存储过程概述&#xff1a; 1.1理解&#xff1a; 含义&am…

vue项目导入 .xlsx 文件

直接上代码&#xff0c;简单示例&#xff1a; 点击导入按钮&#xff0c;弹出导入弹窗&#xff1b; template 部分的代码&#xff1a; <div><el-buttonclass"filter-item"style"margin-left: 10px; margin-bottom: 20px; height: 30px"type"…

ARM-V9 RME(Realm Management Extension)系统架构之功耗管理

安全之安全(security)博客目录导读 目录 一、系统功耗管理 1、功耗状态 2、PE功耗管理 3、系统和PE集群功耗管理 4、系统功耗状态 二、RME组件功耗管理 本节规定了RME系统的功耗管理规则。 功耗管理流程定义了系统及其组件如何在各种电源状态之间进行转换&#xff0c;以…

深度学习中的神经网络——揭秘人工智能的核心技术

在当今科技领域&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;无疑是最热门的话题之一。而作为人工智能领域的核心技术&#xff0c;神经网络&#xff08;Neural Networks&#xff09;正逐渐改变着我们的生活&#xff0c;并在诸如图像…

论文研读|以真实图像为参考依据的AIGC检测

前言&#xff1a;这篇文章介绍几篇AIGC检测的相关工作&#xff0c;其中前几篇文章是以真实图像的特征作为标准进行检测&#xff0c;最后一篇文章就当拓展一下知识边界吧&#xff5e; 目录 Detecting Generated Images by Real Images Only (202311 arXiv)Let Real Images be as…