当前位置: 首页 > article >正文

py脚本部署到服务器定时启动

py脚本部署到服务器定时启动

  • 一、准备好你的脚本
  • 二、把脚本放到服务器
  • 三、在服务器创建脚本所需要的环境
    • 1、安装 Miniconda(如果不想安装 Anaconda 或 Miniconda,可以直接使用 Python 的venv模块创建虚拟环境,但安装 Conda 会更方便管理不同版本的 Python 和包)
    • 2、创建 Python 3.9 虚拟环境
    • 3、在虚拟环境下运行你的脚本程序

一、准备好你的脚本

后面讲的是我用python写的一个脚本,主要是自动更新数据的,但这个不重要。

主要的是代码里面,能让脚本定时启动的库,这个库是apscheduler。先在本地测试看看能否运行,没问题再去部署到服务器(这个后面会说)。

先下载apscheduler库

pip install apscheduler

然后在你的脚本代码里加上定时启动的代码:

#auto_quote.py程序的主要执行函数,只提取一部分
def exec_func():
    start_time = time.time()
    print('程序启动,数据更新中···')
    vc = VocalConcert()
    vc.main()
    end_time = time.time()
    print('程序运行结束!')
    elapsed_time = end_time - start_time
    print(f"程序运行时间: {elapsed_time:.2f} 秒")


if __name__ == '__main__':
	#这段代码导入了 apscheduler 库中的 BlockingScheduler 类,并创建了一个调度器对象 scheduler,
	#同时指定了时区为 Asia/Shanghai(上海时区)。
    scheduler = BlockingScheduler(timezone='Asia/Shanghai')
    """
    这里向调度器添加了一个任务。具体来说:
	exec_func 是要执行的函数。
	'cron' 表示使用 cron 表达式的方式来定义任务的触发时间。
	hour=2, minute=30 指定任务在每天的 2 点 30 分触发。
	args=() 表示传递给 exec_func 函数的参数为空元组。
	max_instances=100 表示允许同时运行的该任务的最大实例数为 100。
	misfire_grace_time=360 表示任务错过预定执行时间后的宽限时间为 360 秒。
    """
    scheduler.add_job(exec_func, 'cron', hour=9, minute=30, args=(), max_instances=100, misfire_grace_time=360)
    scheduler.start()

二、把脚本放到服务器

这个最简单的方法我觉得是直接下载Xftp软件,然后直接拉过去就可以了。
左边是我们主机,右边是远程服务器。
你可以在根目录创建一个data文件夹,然后把你的脚本文件拉过去即可。
在这里插入图片描述
或者你可以使用Xshell远程连接服务器,然后你把你的代码存到git仓库,再通过命令把git仓库的代码pull过来,都一样的。

三、在服务器创建脚本所需要的环境

你需要下载个python解释器才能让服务器看得懂你的代码,因为服务器也是一台主机,所有的主机其实也可以成为服务器。

我这边因为服务器本身有项目存在,所以我创建了一个虚拟环境去运行这个脚本,以免影响到已存在的项目,如果没有的话直接整就行了。

以下是在阿里云服务器上部署 Python 3.9 虚拟环境而不影响已有项目的步骤:

1、安装 Miniconda(如果不想安装 Anaconda 或 Miniconda,可以直接使用 Python 的venv模块创建虚拟环境,但安装 Conda 会更方便管理不同版本的 Python 和包)

在安装 Miniconda 时可以指定安装路径。以下是安装 Miniconda 并指定路径的步骤:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

指定安装路径进行安装,例如安装到/opt/miniconda3:

bash Miniconda3-latest-Linux-x86_64.sh -p /opt/miniconda3

在安装过程中,会有一些提示需要确认,按回车键或输入相应的回答进行确认。

安装完成后,可以通过以下方式激活 Miniconda:

source /opt/miniconda3/bin/activate

2、创建 Python 3.9 虚拟环境

使用 Conda 创建一个新的虚拟环境,命名为myenv(可以自定义名称):

conda create -n myenv python=3.9

激活虚拟环境:

conda activate myenv

现在你可以在这个虚拟环境中安装项目所需的包,而不会影响服务器上已有的项目。

当你使用conda create -n myenv python=3.9创建环境时,环境通常存储在 Conda 的安装目录下的envs文件夹中。
例如,如果你的 Conda 安装在/opt/miniconda3,那么新创建的环境myenv会位于/opt/miniconda3/envs/myenv。所以不用担心。

激活虚拟环境后,你就可以在这个环境里面下载你脚本需要用到的库,而不会与原来的项目产生冲突了。

pip install apscheduler
#等等...

你也可以把需要用到的库写在一个txt文件里,然后直接全量下载也可以。

ps: 当你需要切换回服务器的默认环境或其他已有项目的环境时,使用以下命令:

conda deactivate

3、在虚拟环境下运行你的脚本程序

在上一步的基础上,我们进入到脚本文件所在的位置:

cd data

查看当前文件夹位置:

pwd

查看当前文件夹下的信息:

ls

在运行之前,确保你在服务器上的命令行处于包含该 .py 文件的目录下,或者使用正确的文件路径来运行脚本,比如:

python your_script.py

your_script.py是你的脚本名,我这里用auto_quote.py

你就可以看到你的脚本程序运行起来了。

当然,上面只是运行你的脚本而已,要挂在服务器后台运行的话使用下面这个命令:

nohup python3 auto_quote.py >/dev/null 2>&1 

以下是这个命令的作用:

nohup:使命令忽略挂起(hangup)信号,这意味着即使终端关闭,命令也会继续在后台运行。

python3 crawl_news.py:运行你的 Python 脚本。

>/dev/null 2>&1:将标准输出和标准错误输出重定向到/dev/null,即丢弃所有输出,不输出到终端。

&:将命令放在后台运行。

然而,这并不是绝对保证脚本一直启动着,可能出现的情况有:

脚本中存在错误,可能导致脚本意外退出。
系统资源不足、被管理员终止进程等情况也可能导致脚本停止运行。

你可以使用以下命令查看运行脚本所占用的进程ID:

ps aux | grep auto_quote.py 

大概内容就是上面这些,不懂可以私信我。


http://www.kler.cn/a/441613.html

相关文章:

  • 嵌入式 工程配置
  • Golang:使用DuckDB查询Parquet文件数据
  • OpenVela 各模块之间的交互方式和数据流
  • Java面试专题——面向对象
  • 高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计
  • CPU狂飙900%如何分析?怎么定位?怎么溯源处理
  • 大语言模型与水文水资源领域的深度融合:如何高效完成时间序列分析、空间数据处理、水文模型优化以及智能科学写作等
  • UNIAPP-微信小程序实现文本纠错功能
  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(19):密钥
  • 02. Docker:安装和操作
  • supervision - 好用的计算机视觉 AI 工具库
  • java后端环境配置
  • Linux栈帧
  • Ubuntu22.04搭建FTP服务器保姆级教程
  • SSM 电脑配件销售系统的高效设计与 JSP 实现技巧分享
  • sql server一些冷知识
  • node_modules文件夹删除失败解决办法
  • vue3 echarts tree结构实现点击添加子节点和修改图标样式
  • 基于streamlit搭简易前端页面
  • 二、STM32MP257安全启动流程简介
  • oracle多次替换字符,批量替换,循环替换------------gxl
  • 实战攻防中针对JS路径的泄露和Webpack漏洞的初探
  • 无人机故障安全模式设计逻辑与技术!
  • SQL -- 条件分支
  • OpenCV及基本用法
  • 原理 | dubbo [与 springboot 整合时服务导出的触发]