我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用Python实现服务部署自动化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用Python实现服务部署自动化

这篇“怎么用Python实现服务部署自动化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python实现服务部署自动化”文章吧。

1. 准备

这里要介绍一个 Python 依赖库「 watchdog 」

它可用于监控某个文件目录下的文件变化,包含:删除、修改、新增等操作,每一个操作都会回调一个事件函数,我们可以在内部编写自定义的逻辑,以此满足我们的需求。

# 安装依赖包pip3 install watchdog

2. 实战一下

首先,我们需要创建一个监听器,用于监听文件夹目录:

from watchdog.observers import Observer...# 创建一个监听器,用来监听文件夹目录observer = Observer()...

然后,创建 2 个事件处理对象。

PS:该对象继承于「 FileSystemEventHandler 」类。

它们分别用于监听「 /tmp 」目录、「 /home/project/frontend 」目录,假设事件对象被命名为 obj1、obj2

obj1 负责监听 /tmp 目录,重写「 新建或修改 」事件方法,完成压缩文件的移动操作:

from watchdog.events import *import ntpathimport shutilimport zipfiledef get_filename(filepath): """ 根据文件夹目录,获取文件名称(待后缀) :param filepath: :return: """ return ntpath.basename(filepath)class FileMoveHandler(FileSystemEventHandler): def __init__(self): FileSystemEventHandler.__init__(self) ... # 文件新建 def on_created(self, event): # 新建文件夹 if event.is_directory: # print("directory created:{0}".format(event.class="lazy" data-src_path)) pass # 新建文件 else: # print("file created:{0}".format(event.class="lazy" data-src_path)) filename = get_filename(event.class="lazy" data-src_path) # 如果属于前端的4个项目压缩包,开始文件夹的操作 if filename in watch_tags: self.start(filename)...def on_modified(self, event): if event.is_directory: # print("directory modified:{0}".format(event.class="lazy" data-src_path)) pass else: # print("file modified:{0}".format(event.class="lazy" data-src_path)) filename = get_filename(event.class="lazy" data-src_path) if filename in watch_tags: self.start(filename) ... def start(self, filename): """ 文件处理逻辑 :param filename: :return: """ try: # 文件名不带后缀 filename_without_suffix = filename.split(".")[0] # 源文件路径(压缩包文件) source_file_path = watch_folder + filename # 目标文件路径(压缩包文件) target_file_path = target_folder + filename # 目标项目文件夹(目标项目) target_project_path = target_folder + filename_without_suffix # 1、复制文件到目标文件夹 print(f"拷贝源目录{source_file_path},目标文件夹:{target_folder}") # 删除目标文件夹下的压缩文件 if os.path.exists(target_file_path): os.remove(target_file_path) # 移动文件到目标文件夹中 shutil.move(source_file_path, target_folder) # 2、清空目标文件夹中内的所有文件夹(如果存在) # 如果不存在,新建一个文件夹 if os.path.exists(target_project_path): shutil.rmtree(target_project_path, ignore_errors=True) print(f"项目{filename_without_suffix}移动成功!") except Exception as e: print("部署失败,错误原因:", str(e.args))

obj2 负责监听 /home/project/frontend 目录,同样重写「 新建或修改 」事件方法,完成压缩文件的解压动作:

... def start(self, filename): # 文件名不带后缀 filename_without_suffix = filename.split(".")[0] # 目标文件路径(压缩包文件) target_file_path = target_folder + filename # 目标项目文件夹(目标项目) target_project_path = target_folder + filename_without_suffix r = zipfile.is_zipfile(target_file_path) if r: fz = zipfile.ZipFile(target_file_path, 'r') for file in fz.namelist(): fz.extract(file, target_folder) else: print('这不是一个正常的zip压缩包!')...

接着,通过监听器启动上面两个事件的监听任务:

import time...if __name__ == "__main__": # 待监听的文件夹目录 watch_folder = "/tmp/" # 项目目标文件夹目录 target_folder = "/home/project/frontend/" # 监听文件夹名称,即:项目压缩包名称 watch_tags = ['proj1.zip', 'proj2.zip', 'proj3.zip', 'proj4.zip'] # 创建一个监听器,用来监听文件夹目录 observer = Observer() # 创建两个事件处理对象 move_handler = FileMoveHandler() unzip_handler = FileUnzipHandler() # 启动监控任务 # 参数分别是:观察者、监听目录、是否监听子目录 observer.schedule(move_handler, watch_folder, True) observer.schedule(unzip_handler, target_folder, True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()...

最后,我们在服务器上通过「 nohup 」命令,让文件监听程序在后台运行即可。

# 在后台运行# 项目文件:watch_folder.py# 日志文件:watch_folder.lognohup python3 -u watch_folder.py > watch_folder.log 2>&1 &# 查看日志:cat watch_folder.log

以上就是关于“怎么用Python实现服务部署自动化”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用Python实现服务部署自动化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用Python实现服务部署自动化

这篇“怎么用Python实现服务部署自动化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python实现服务部署自动化
2023-07-06

云服务器自动化部署怎么实现

实现云服务器自动化部署云服务器自动化部署通过脚本和工具自动执行服务器配置和应用程序部署,提高效率、减少错误,确保一致性和安全性。步骤包括准备基础设施、部署工具、创建部署脚本、测试脚本、配置自动化、监视和管理。最佳实践包括模块化脚本、版本控制、错误处理、测试和安全。好处包括提高效率、减少错误、提高安全性、可扩展性、一致性和部署速度。
云服务器自动化部署怎么实现
2024-04-10

云服务器自动化部署怎么实现

实现云服务器的自动化部署可以通过以下几个步骤来实现:1. 配置云服务器环境:首先需要在云平台上创建一个虚拟机实例,并配置好所需要的操作系统、网络、存储等环境。2. 编写自动化部署脚本:根据自己的需求,编写一个自动化部署脚本,包括所需的软件安
2023-09-16

docker自动化部署怎么实现

要实现Docker的自动化部署,可以采用以下步骤:1. 编写Dockerfile:根据项目需求编写Dockerfile文件,定义Docker镜像的构建流程、依赖关系和环境配置等。2. 使用CI/CD工具:选择一个适合的CI/CD工具(如Je
2023-08-12

jenkins+shell自动化部署怎么实现

这篇文章主要介绍了jenkins+shell自动化部署怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jenkins+shell自动化部署怎么实现文章都会有所收获,下面我们一起来看看吧。通过jenkins
2023-06-29

怎么在Springboot服务中实现自动化部署Docker

怎么在Springboot服务中实现自动化部署Docker?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。微服务部署方式(1)手动部署:首先基于源码打包生成jar包(或war
2023-06-14

Jenkins中怎么实现Pipeline自动化部署

本篇文章给大家分享的是有关Jenkins中怎么实现Pipeline自动化部署,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Jenkins前的一些设置为了快速搭建Jenkin
2023-06-19

怎么搭建jenkins实现自动化部署

要搭建Jenkins实现自动化部署,您需要按照以下步骤进行操作:1. 安装Jenkins:您可以从Jenkins官方网站下载适用于您操作系统的安装包,并按照安装向导完成安装过程。2. 启动Jenkins:安装完成后,启动Jenkins服务。
2023-08-12

怎么用NFV+SDN实现VNF全自动化部署

本篇内容介绍了“怎么用NFV+SDN实现VNF全自动化部署”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、某运营商期望通过数字化转型项目提
2023-06-03

git自动化部署php脚本怎么实现

实现Git自动化部署PHP脚本本文提供分步指南,帮助您实现Git自动化部署脚本,用于PHP应用程序。它涵盖了脚本设置、脚本编写、Git钩子设置、测试和配置Composer自动加载。该脚本通过克隆代码库、更新代码、运行Composer安装和重启Web服务器来实现自动化部署。通过遵循指南中的步骤,您可以节省时间和精力,提高部署过程的准确性。
git自动化部署php脚本怎么实现
2024-04-25

PXE怎么实现自动化部署Linux系统

本篇内容主要讲解“PXE怎么实现自动化部署Linux系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PXE怎么实现自动化部署Linux系统”吧!背景说明在数据中心,一次几十台甚至几百台服务器上
2023-06-22

git自动化部署php脚本怎么实现

git自动化部署php脚本的实现方法:1、安装git;2、克隆仓库代码;3、更改linux权限,修改配置;4、将www用户加入sudoers;5、生成密钥;6、填写webhook域名,上传php脚本即可。
2014-07-13

怎么利用k8s与gitlab来实现自动化部署

这篇文章主要介绍了怎么利用k8s与gitlab来实现自动化部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用k8s与gitlab来实现自动化部署文章都会有所收获,下面我们一起来看看吧。一、什么是k8s?
2023-07-05

怎么使用Jenkins和Git来实现自动化部署

这篇文章主要介绍“怎么使用Jenkins和Git来实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Jenkins和Git来实现自动化部署”文章能帮助大家解决问题。一、为什么需要自
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录