Revision 70552c46
b/lib/jqueue.py | ||
---|---|---|
48 | 48 |
JOBQUEUE_THREADS = 5 |
49 | 49 |
|
50 | 50 |
|
51 |
def TimeStampNow(): |
|
52 |
return utils.SplitTime(time.time()) |
|
53 |
|
|
54 |
|
|
51 | 55 |
class _QueuedOpCode(object): |
52 | 56 |
"""Encasulates an opcode object. |
53 | 57 |
|
... | ... | |
60 | 64 |
self.status = constants.OP_STATUS_QUEUED |
61 | 65 |
self.result = None |
62 | 66 |
self.log = [] |
67 |
self.start_timestamp = None |
|
68 |
self.end_timestamp = None |
|
63 | 69 |
|
64 | 70 |
@classmethod |
65 | 71 |
def Restore(cls, state): |
... | ... | |
68 | 74 |
obj.status = state["status"] |
69 | 75 |
obj.result = state["result"] |
70 | 76 |
obj.log = state["log"] |
77 |
obj.start_timestamp = state.get("start_timestamp", None) |
|
78 |
obj.end_timestamp = state.get("end_timestamp", None) |
|
71 | 79 |
return obj |
72 | 80 |
|
73 | 81 |
def Serialize(self): |
... | ... | |
76 | 84 |
"status": self.status, |
77 | 85 |
"result": self.result, |
78 | 86 |
"log": self.log, |
87 |
"start_timestamp": self.start_timestamp, |
|
88 |
"end_timestamp": self.end_timestamp, |
|
79 | 89 |
} |
80 | 90 |
|
81 | 91 |
|
... | ... | |
191 | 201 |
job.run_op_index = idx |
192 | 202 |
op.status = constants.OP_STATUS_RUNNING |
193 | 203 |
op.result = None |
204 |
op.start_timestamp = TimeStampNow() |
|
194 | 205 |
queue.UpdateJobUnlocked(job) |
195 | 206 |
|
196 | 207 |
input_opcode = op.input |
... | ... | |
229 | 240 |
try: |
230 | 241 |
op.status = constants.OP_STATUS_SUCCESS |
231 | 242 |
op.result = result |
243 |
op.end_timestamp = TimeStampNow() |
|
232 | 244 |
queue.UpdateJobUnlocked(job) |
233 | 245 |
finally: |
234 | 246 |
queue.release() |
... | ... | |
241 | 253 |
try: |
242 | 254 |
op.status = constants.OP_STATUS_ERROR |
243 | 255 |
op.result = str(err) |
256 |
op.end_timestamp = TimeStampNow() |
|
244 | 257 |
logging.debug("Op %s/%s: Error in %s", idx + 1, count, op) |
245 | 258 |
finally: |
246 | 259 |
queue.UpdateJobUnlocked(job) |
Also available in: Unified diff