Python3 如何只允许一个脚本实例运行?

来源:GK导航    date:2022-9-6    标签:,     admin

场景需求

Python3中如何保证同样的脚本在运行时只允许一个运行实例,不允许新建一个脚本重新运行?我们这里使用文件锁的方式,简单方便。下面给出代码实例。

代码实例

import sys ,os  def lockFile(lockfilepath):     '''     :param lockfilepath:文件锁,文件名     '''     if os.path.exists(lockfilepath):         #文件存在,说明脚本正在执行         logging.critical("×××××× 脚本正在执行中,退出本次调度 ××××××")         sys.exit()     else:         #文件不存在,创建文件,并执行任务。         logging.info('已开启文件锁 %s',lockfilepath)         subprocess.getoutput('echo "" > '+lockfilepath)         return True  def unLockFile(lockfilepath):     os.remove(lockfilepath)     logging.info('已释放文件锁 %s',lockfilepath)

调用方法

lockFileName = '/tmp/SCHEDULINGVLAN.Lock' func.lockFile(lockFileName) #.... do something else .... func.unLockFile(lockFileName) 

这里lockfileName设定了文件存储位置。

如果程序意外出错,执行不到程序的最下面释放文件锁的话,永远无法新起脚本进程。

当然这里也可以使用try / catch的方式来捕捉以外错误,同时释放文件锁。

腾讯云限时秒杀【点击购买】

搬瓦工,CN2高速线路,1GB带宽,电信联通优化KVM,延迟低,速度快,建站稳定,搬瓦工BandwagonHost VPS优惠码BWH26FXH3HIQ,支持<支付宝> 【点击购买】!

Vultr$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

阿里云香港、新加坡VPS/1核/1G/25G SSD/1T流量/30M带宽/年付¥288【点击购买】

Python3 如何只允许一个脚本实例运行?

`微信`扫码 加好友