blob: 837fb26f234aab3850cbb12182882b6e55003d58 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/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()
|