首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-01-18 13:23
  • 2554
  • 6454
blog.csdn.net

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

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

一、准备好你的脚本

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

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

先下载apscheduler库

pip install apscheduler
  • 1

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

#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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

二、把脚本放到服务器

这个最简单的方法我觉得是直接下载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
  • 1

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

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

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

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

source /opt/miniconda3/bin/activate
  • 1

2、创建 Python 3.9 虚拟环境

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

conda create -n myenv python=3.9
  • 1

激活虚拟环境:

conda activate myenv
  • 1

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

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

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

pip install apscheduler
#等等...
  • 1
  • 2

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

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

conda deactivate
  • 1

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

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

cd data
  • 1

查看当前文件夹位置:

pwd
  • 1

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

ls
  • 1

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

python your_script.py
  • 1

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

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

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

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

以下是这个命令的作用:

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

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

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

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

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

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

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

ps aux | grep auto_quote.py 
  • 1

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

注:本文转载自blog.csdn.net的墨菲马的文章"https://blog.csdn.net/Yima_Dangxian/article/details/144539449"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

121
服务器
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top