~aleteoryx/employ

ref: a9f243dd6e62eb9597824a6fae5f75d0ad5da5a2 employ/taken.py -rwxr-xr-x 1012 bytes
a9f243ddAleteoryx do networking properly jesus 8 days ago
                                                                                
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
45
46
47
48
49
50
51
52
53
54
#!/bin/env python3

import socket
from sys import argv, stderr, exit

argv0 = 'taken.py'

def usage():
	global argv0
	print(f'usage: {argv0} <host> <port>', file=stderr)
	exit(-1)

class JobError(Exception):
	pass
def send_cmd(reader, writer, cmd):
	lines = []

	writer.write(cmd.encode()+b'\n')
	writer.flush()
	while True:
		line = reader.readline()
		if line == b'?\n':
			raise JobError(cmd)
		elif line == b'OKAY\n':
			return lines
		else:
			lines.append(line.decode().strip())


if len(argv) > 0:
	argv0 = argv[0]
	argv = argv[1:]
if len(argv) != 2:
	usage()
host, port = argv

sok = socket.create_connection((host, port))
reader, writer = sok.makefile('rb'), sok.makefile('wb')

taken = send_cmd(reader, writer, 'list taken jobs')
for job in taken:
	jid = job.split('\t',1)[0]

	print(f'job {jid}:')

	info = send_cmd(reader, writer, f'info for job {jid} is')
	for line in info:
		print(f'\t{line}')
	print()

	meta = send_cmd(reader, writer, 'meta is')
	for line in meta:
		print(f'\t{line}')
	print()