云上持续交付实践系列3 --- Python 篇

简介: 云上持续交付实践系列3 --- Python 篇 阿里云持续交付平台CRP(Continuous Release Platform)作为一款开发人员手里的居家旅行,杀人越货的利器,必然有其广泛的应用场景。本文将会演示如何在如何使用阿里云持续交付平台部署一个Python应用。Python作为一种脚本

云上持续交付实践系列3 --- Python 篇

阿里云持续交付平台CRP(Continuous Release Platform)作为一款开发人员手里的居家旅行,杀人越货的利器,必然有其广泛的应用场景。本文将会演示如何在如何使用阿里云持续交付平台部署一个Python应用。Python作为一种脚本语言,经常与多种语言一起配合完成某些复杂的功能,与此同时,其强大的第三方库又进一步拓展了Python的应用领域。

应用概述

本文涉及两个项目,分别为基于Python的在线爬虫以及基于node.js的web服务器。这也是笔者日常生活中经常使用的脚本,现在拿出来与大家分享。其中Python爬虫的功能为投资分析,该爬虫可以根据基金用户买入赎回的操作记录,结合在线抓取的基金价格走势,确定下一步投资的方向;而node.js服务器为之前分析的结果提供展示的平台。这两个项目均已在阿里云Code平台开源,在线爬虫 https://code.aliyun.com/394062113/FundManager,web服务器 https://code.aliyun.com/394062113/FundManagerWeb。由于本项目是由两个独立的部分组成,前端展示系统与后端数据分析系统分属于两个不同的代码库,因此,配置本项目需要使用两条工作流,其中一条工作流用于配置Python部分,另一条工作流用于配置node部分。

使用CRP进行配置的流程

首先,需要在CRP中创建新项目,点击创建新项目的按钮,输入新项目的名称,即可完成CRP新项目的创建。项目创建完成后如图所示:

Python部分配置流程

配置CRP的工作流的第一步为创建工作流,在本文中,笔者采用的默认模板工作流。在工作流中,设置第一个节点的名称为Python代码检出。在CRP中,我们只需要在新建节点中配置代码更新的任务,即可完成代码更新的配置。该节点的配置如图所示:
python_


完成了Python代码检出,需要进行依赖文件的安装并且执行测试。在这一步中,笔者将第二个节点的名称设置为Python测试,因为在CRP中,编译、测试可以在一个任务中同时完成。具体做法如下:在第二个节点中新建一个“编译/测试”任务,根据项目的开发语言选择编译环境,再填写具体的依赖安装脚本以及测试执行指令,同时打开产出物上传的开关,将刚才运行的结果同时打包。该在线爬虫是使用Python3.5开发的,同时依赖了爬虫框架Scrapy,使用的是pip install安装依赖。因此该节点的配置如图所示:
python_


紧接着,需要将Python爬虫部署至服务器上,具体的做法是,从Python测试节点拉出一个新的节点,并且添加任务为“部署”,然后输入部署目标主机的IP地址、部署路径、部署脚本以及进行机器授权。这里需要特别注意的是机器授权的流程,由于CRP是通过ssh的方式对目标主机进行操作,因此需要在目标主机上添加authorized_keys的条目。具体的部署脚本如下:

cd /root/FundManager
tar -xf package.tgz

笔者采用的是阿里云ECS主机,以该主机为例,Python部署节点的配置如图所示:
python_


至此,本项目的Python部分的部署完毕,在线爬虫系统的数据部分已经成功部署至服务器,后续的工作是部署一个web展示模块,方便使用浏览器查看数据分析的结果。
python_

Node.js部分配置流程

页面展示模块采用的是Node.js的express作为http服务器,配置的第一步也同样为拉出一个节点,命名为Node代码检出,并且配置完node.js项目的git地址。该节点的配置如图所示:
node_


完成Node代码检出后,需要进行依赖文件的安装并且执行测试。在这一步中,笔者拉出一个新节点的名称设置为Node安装依赖,并且新建一个“编译/测试”任务,根据项目的开发语言选择编译环境,再填写具体的依赖安装脚本指令,同时打开产出物上传的开关,将环境依赖同时打包。该服务器是使用Node0.12开发的,同时依赖了express,使用的是npm install安装依赖。因此该节点的配置如图所示:
node_


最后一个步骤为将node.js项目部署至服务器上,由于之前已经配置过部署任务,因此本次部署任务不需要重新添加公钥,只需要配置IP地址,部署路径以及部署脚本即可。具体的部署脚本如下:

cd /root/FundManager  && tar -xf package.tgz
kill -9 `ps -ef | grep node | grep -v grep | awk '{print $2}'`
nohup node app.js &

该节点的配置如图所示:
node_
至此,Node工作流部署完毕,完整的工作流如图所示。
node_

测试发布效果

分别触发刚才配置的两条工作流,等待其执行完毕。在执行完毕后,在浏览器中访问项目的URL可以看到返回页面,证明CRP的发布成功。只需要一次配置,以后均可以在提交代码后直接运行该工作流进行部署,真正实现,一键测试,一键发布。Stop coding, start amazing!
_

目录
相关文章
|
9天前
|
人工智能 数据可视化 数据挖掘
Python:编程语言的魅力与实践
Python:编程语言的魅力与实践
|
4天前
|
机器学习/深度学习 人工智能 算法
【Python 机器学习专栏】强化学习在游戏 AI 中的实践
【4月更文挑战第30天】强化学习在游戏AI中展现巨大潜力,通过与环境交互和奖励信号学习最优策略。适应性强,能自主探索,挖掘出惊人策略。应用包括策略、动作和竞速游戏,如AlphaGo。Python是实现强化学习的常用工具。尽管面临训练时间长和环境复杂性等挑战,但未来强化学习将与其他技术融合,推动游戏AI发展,创造更智能的游戏体验。
|
4天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
4天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】支持向量机(SVM)在Python中的实践
【4月更文挑战第30天】SVM是一种高效的监督学习算法,适用于分类和回归,尤其擅长处理高维和非线性问题。通过寻找最大边际超平面来分隔数据,SVM具有高效性、鲁棒性、灵活性和稀疏性等特点。
|
4天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】自动化特征选择与优化的实践
【4月更文挑战第30天】特征选择在机器学习中至关重要,能降低模型复杂度,提高泛化能力和避免过拟合。本文介绍了自动化特征选择的三种方法:过滤法(如SelectKBest)、包装法(如RFE)和嵌入法(如随机森林)。通过结合这些方法,可实现特征优化,包括数据预处理、初步筛选、模型训练与评估、特征优化和结果验证。自动化特征选择能提升模型性能,适应不同数据集和任务需求,为机器学习项目提供坚实基础。
|
6天前
|
存储 算法 搜索推荐
如何提升Python代码的性能:优化技巧与实践
本文将介绍如何通过优化技巧和实践方法来提升Python代码的性能。从避免不必要的循环和函数调用,到利用内置函数和库,再到使用适当的数据结构和算法,我们将深入探讨各种提升Python代码性能的方法,帮助开发者写出更高效的程序。
|
9天前
|
机器学习/深度学习 人工智能 数据处理
Python编程的魅力与实践
Python编程的魅力与实践
|
10天前
|
机器学习/深度学习 自然语言处理 算法
利用Python进行情感分析:从入门到实践
【4月更文挑战第24天】 在数字化时代,文本数据无处不在。理解这些文本背后的情绪倾向对于品牌管理、市场研究乃至政治分析都至关重要。本文将引导读者通过Python编程语言实现基本的情感分析任务,涵盖从预处理步骤到模型训练和结果解释的全过程。我们将使用流行的自然语言处理库NLTK和机器学习框架scikit-learn来构建一个简单的情感分析模型,并探索如何将其应用于实际场景中。
|
10天前
|
开发框架 前端开发 数据库
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
|
10天前
|
设计模式 算法 程序员
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践