BorgInstance.py

changeset 1
4cdc9c1f6b28
parent 0
f5aecaad0bcf
child 2
e343594c0014
equal deleted inserted replaced
0:f5aecaad0bcf 1:4cdc9c1f6b28
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

mercurial