aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wqueue.py
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()