Thu, 18 Jan 2018 23:01:16 +0000
basic scheduler structure draft, etc.
0 | 1 | # |
2 | # Borgend borg launcher / processor | |
3 | # | |
4 | ||
5 | import json | |
6 | import subprocess | |
7 | import config | |
8 | import Queue | |
9 | import Thread | |
10 | ||
11 | def linereader(stream, instance, queue) | |
12 | # What to do on error? | |
13 | for line in iter(stream.readline, b''): | |
14 | status=json.loads(line) | |
15 | queue.put({'identifier': instance.identifier, | |
16 | 'operation': instance.operation, | |
17 | 'status': status}) | |
18 | out.close() | |
19 | ||
20 | class BorgInstance: | |
21 | ||
22 | def __init__(self, identifier, operation, args): | |
23 | self.identifier=identifier; | |
24 | self.operation=operation; | |
25 | self.args=args; | |
26 | ||
27 | def construct_cmdline(self): | |
28 | ??? | |
29 | ||
30 | def launch(self, queue): | |
31 | # What to do with stderr? Is it needed? | |
32 | self.proc=subprocess.Popen(self.construct_cmdline(), | |
33 | stdout=subprocess.PIPE, | |
34 | stderr=subprocess.PIPE) | |
35 | linereaderargs=(self.proc.stdout, self, queue) | |
36 | self.t=Thread(target=linereader, args=linereaderargs) | |
37 | t.daemon=True | |
38 | t.start() | |
39 | ||
40 | def read_output(): | |
41 | try: | |
42 | obj=self.queue.get_nowait() | |
43 | except Empty: | |
44 | obj=Empty | |
45 | return obj | |
46 | ||
47 | ||
48 | ||
49 |