• Python实现脚本锁功能,同时只能执行一个脚本


    1. 文件锁

    脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件。

    通过文件的判断来确定脚本是否正在执行。

    方法实现也比较简单,这里以python脚本为例

     1 #coding=utf-8
     2 #
     3 #   文件锁脚本测试
     4 #
     5 import os       #操作系统
     6 import time
     7 
     8 lockfilepath = "/opt/lock.txt";
     9 #判断文件是否存在
    10 if os.path.exists(lockfilepath):
    11     #文件存在,说明脚本正在执行
    12     print("脚本正在执行")
    13 else:
    14     #文件不存在,创建文件,并执行任务。
    15     lockfile = open(lockfilepath,"w+");
    16     print ("文件锁  任务模拟sleep 10s");
    17     time.sleep(10);
    18     print ("任务模拟结束 sleep over ");
    19     #删除文件
    20     os.remove(lockfilepath);

    文件锁测试结果

    2.端口占用

    使用socket模块,在脚本执行时,给系统中增加一个端口,在脚本执行完后释放。

    脚本执行时,去创建这个端口,如果脚本还在执行,端口会创建失败,提示脚本还在执行。

    实现方法也比较简单:Python脚本

     1 #coding=utf-8
     2 import time
     3 import socket
     4 
     5 suo = 1
     6 try:
     7     global hyf_suo 
     8     hyf_suo = socket.socket()
     9     addr = ('',98889)
    10     hyf_suo.bind(addr);
    11     suo = 1;
    12 except:
    13     suo = 2;
    14     print('already has an instance')
    15 
    16 
    17 if(suo==1):
    18     print ("锁住 sleep  ");
    19     time.sleep(10);
    20     print ("sleep over ");
    21 else:
    22     print("已经加锁了");

     端口锁测试结果

    结论

    以上两种方法都能实现脚本锁的功能,请根据情况选择合适的方法。

  • 相关阅读:
    在页面生命周期执行时 Page 对象在 SaveState 阶段都发生了什么事?
    接收Firfox RESTClient #Post请求
    c# 单例模式[Singleton]之深夜闲聊
    JQuery 之 Ajax 异步和同步浅谈
    [模板]数学整合
    Yandex插件使用说明——Slager_Z
    模板练习(LUOGU)
    数学整合 新(LUOGU)
    [NOI.AC]DELETE(LIS)
    [NOI.AC]COUNT(数学)
  • 原文地址:https://www.cnblogs.com/loveincode/p/6834918.html
Copyright © 2020-2023  润新知