1

我有一个监视文件夹,其中文件被删除。通过 cronjob,我启动了一个 python 脚本,首先检查新文件。

def file_to_process():
    filePath = "".join([base_url_gpfs, '/*'])
    if glob.glob(filePath + "*.xml"):
        set_pid_file()
        #find oldest xml file and change into corresponding mxf file
        xmlToProcess = min(glob.glob(filePath + "*.xml"), key=os.path.getctime)
        fileToProcess = xmlToProcess[:-3] + 'wav'
        if not os.path.isfile(fileToProcess):
            sys.exit(logger.error("{} not found".format(fileToProcess, filePath)))
        return xmlToProcess, fileToProcess
    else:
        os._exit(0)

如果是这样,它会创建一个 pid 文件并将该文件上传到云服务。

def set_pid_file():
    if os.path.isfile(pidfile):
        logger.info('Process is already running')
        os._exit(0)
    else:
        pid = str(os.getpid())
        f = open(pidfile, 'w')
        f.write(pid)

云中的处理完成后,我删除了 pid 文件,但脚本仍在运行并执行其他任务。那时,当有新文件可用时,脚本的新实例可以再次启动。但是,当脚本多次运行并且失败时,它似乎在某个地方迷失了方向。所以我正在寻找一种更可靠的方法来并行运行同一脚本的不同实例。

4

0 回答 0