auto-run-on-remote

auto run current python script on remote server


Keywords
auto_run_on_remote
License
BSD-3-Clause
Install
pip install auto-run-on-remote==0.4

Documentation

1 安装

pip install auto_run_on_remote

2 auto_run_on_remote 介绍

全名字含义应该是 auto_run_current_python_script_on_remote_server

在本机运行脚本自动在远程机器上运行。

自动上传文件夹 自动创建文件夹 自动远程机器上运行python脚本。
原理是 run_current_script_on_remote() 函数中自动利用 sys._getframe(1).f_code.co_filename 获取当前文件位置,所以不用传参告诉函数当前脚本的位置。

比pycahrm专业版复杂的配置调用远程python解释器更方便,因为pycahrm专业版如果设置了远程解释器启动脚本时候很卡,
启动ide界面更卡,因为ide会去读远程解释器的所有安装的python包,真的是太卡了。
而这个在远程运行启动速度就很快,丝毫不会造成ide卡顿。
还有就是破解最新版pycahrm麻烦老失效,用社区版就好了

3 用法如下

在项目的任意目录层级下的脚本中运行 run_current_script_on_remote(),则脚本会自动运行在远程机器。
当第一次运行脚本时候,会自动在你当项目的根目录生成 auto_run_on_remote_config.py 配置文件,然后,你自己按需修改其中的值。
以后运行run_current_script_on_remote()会自动读取到 auto_run_on_remote_config.py  中的配置。
import time
import sys

from auto_run_on_remote import run_current_script_on_remote


run_current_script_on_remote()
# 以下的代码的print都不是在当前机器打印的,是在远程机器上打印的。

for i in range(10):
    print(f'嘻嘻 {i},通过文件路径和python解释器路径,可以发现这句话是在远程机器打印出来的, {__file__} ,{sys.executable} ')
    time.sleep(1)

代码运行截图,我本机是win10,可以看到代码是运行在linux的。 hXvZff.png

4 配置文件 auto_run_on_remote_config.py 介绍

"""
这个配置文件是自动生成到你的项目根目录的。
"""

import sys

# 项目根目录文件夹,这个一般不需要改,会根据PYTHONPATH智能获取。
# pycahrm自动添加了项目根目录到第一个PYTHONPATH,如果是cmd命令启动这先设置PYTHONPATH环境变量。
# windows设置  set PYTHONPATH=你当前python项目根目录,然后敲击你的python运行命令
# linux设置    export PYTHONPATH=你当前python项目根目录,然后敲击你的python运行命令
PYTHON_PROJ_DIR_LOCAL = sys.path[1]

# 这是远程机器的账号密码配置。把这个配置文件加到gitignore就不会泄漏了。
HOST = '192.168.6.133'
PORT = 22
USER = 'ydf'
PASSWORD = '123456'

PYTHON_INTERPRETER = 'python3'  # 如果你安装了四五个python环境,可以直接指定远程解释器的绝对路径  例如 /opt/minicondadir/ens/env35/python

FORBID_DEPLOY_FROM_LINUX = True # 一般生产机器是linux,是否禁止从linux部署到别的机器,这样可以防止你从生产环境远程到测试环境,配置后,即使生产环境的代码有远程部署,也不会执行远程部署而是直接运行。

# 上传文件夹的配置,具体可以看paramiko_util.py里面的代码。
PATH_PATTERN_EXLUDED_TUPLE = ('/.git/', '/.idea/', '/dist/', '/build/')  # 路径中如果有这些就自动过滤不上传
FILE_SUFFIX_TUPLE_EXLUDED = ('.pyc', '.log', '.gz')  # 这些后缀的文件不上传
ONLY_UPLOAD_WITHIN_THE_LAST_MODIFY_TIME = 3650 * 24 * 60 * 60  # 只有在这个时间之内修改的文件才上传。如果项目比较大,可以第一次完整上传,之后再把这个时间改小。
FILE_VOLUME_LIMIT = 1000 * 1000  # 大于这个体积的文件不上传,单位b。
SFTP_LOG_LEVEL = 20  # 文件夹上传时候的日志级别。10 logging.DEBUG ,20 logging.INFO 30 logging.WaRNING,如果要看为什么某个文件上传失败,可以设置debug级别。

EXTRA_SHELL_STR = ''  # 远程执行命令之前,可以自定义执行的shell语句,一般例如可以设置啥环境变量什么的。