#!/usr/bin/python3 import fcntl import time import subprocess import os QUEUE_FILE = 'queue.txt' COMMAND = './command.sh' def do_job(command=None, arg=None): assert(command) assert(arg) print('arg:', arg) print('doing operation with arg') ret = subprocess.check_call([command, arg]) print('ret:', ret) return ret == 0 def read_next_job_arg(): with open(QUEUE_FILE, 'r') as f: line = f.readline() return line.strip() def pop_job_arg(): queue = QUEUE_FILE queue_tmp = queue + '.tmp' linecount = 0 with open(queue, 'r') as fi, open(queue_tmp, 'w') as fo: for line in fi: linecount += 1 if linecount == 1: continue fo.write(line) os.rename(queue_tmp, queue) #with open('queue.txt', 'w') as f: # fcntl.lockf(f, fcntl.LOCK_EX) # time.sleep(9999) while True: job_arg = read_next_job_arg() if do_job(command=COMMAND, arg=job_arg): pop_job_arg()