Как я могу запустить тот же самый скрипт python, параллельно запущенный из задания cron? - PullRequest
1 голос
/ 24 февраля 2020

У меня есть папка наблюдения, где файлы удаляются. Через 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, но скрипт все еще работает и выполняет другие задачи. В этот момент новый экземпляр скрипта может запуститься снова, когда появится новый файл. Но, кажется, что-то теряется, когда скрипт запускается несколько раз и не работает. Поэтому я ищу более надежный способ параллельного запуска разных экземпляров одного и того же скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...