我正在使用this Python程序连接到VPS并创建NAT隧道。
My Home Windows PC <-- My Linux VPS <-- The internet
因此,即使我的PC在NAT之后,也可以访问公开的VPS,它将重新请求重新发送到Python脚本,然后将其重新发送到我的家用PC。
要在家用PC上启动Python脚本,请使用以下简单的批处理文件:
cd "%~dp0"
python.exe natsrv.py --mode client --secret hunter1 --local 127.0.0.1:8080 --admin myvps.ip.here:8999
这将启动永远不会停止的Python脚本:它会无限期地继续下去,直到我关闭批处理窗口。很好。
这里是问题:如果隧道在几分钟内未使用,它将以静默方式停止处理请求。这不会停止Python脚本的执行,该脚本会继续运行...它只是停止工作,而是继续运行。
我可以在Python脚本中解决此问题,但它非常复杂,我不想弄乱它:我想要一个简单得多的解决方案。
批处理文件应每5分钟停止python.exe的执行并重新启动它。。我该怎么办?
[SLEEP和GOTO命令或我尝试过的任何类似命令,将在Python脚本结束之前等待,然后被触发!
我需要告诉批处理脚本(或控制它的任何实体),无论它是否仍在运行,必须每5分钟停止并重新启动python.exe。有可能吗?
只需让脚本自行运行。创建一个“父级”-它所做的就是运行子级,等待5分钟,如有必要,将其杀死并再次运行。
import time
import multiprocessing as mp
def the_real_program():
print("I am doing useful stuff")
def parent():
while True:
p = mp.Process(target=the_real_program)
p.start()
time.sleep(5*60)
p.terminate()
p.join()