##// END OF EJS Templates
handleError added to jroplotter
Miguel Valdez -
r732:06db6e628514
parent child
Show More
@@ -3,15 +3,19 Created on Jul 9, 2014
3 3
4 4 @author: roj-idl71
5 5 '''
6 import os
6 import os, sys
7 7 import datetime
8 8 import numpy
9 import traceback
9 10
10 11 from time import sleep
11 12 from Queue import Queue
12 13 from threading import Lock
13 14 # from threading import Thread
14 15
16 import schainpy
17 import schainpy.admin
18
15 19 from schainpy.model.proc.jroproc_base import Operation
16 20 from schainpy.model.serializer.data import obj2Dict, dict2Obj
17 21 from jroplot_correlation import *
@@ -67,9 +71,20 class Plotter(Operation):
67 71
68 72 # class PlotManager(Thread):
69 73 class PlotManager():
74
75 __err = False
70 76 __stop = False
77 __realtime = False
78
71 79 controllerThreadObj = None
72 80
81 plotterList = ['Scope',
82 'SpectraPlot', 'RTIPlot',
83 'CrossSpectraPlot', 'CoherenceMap',
84 'PowerProfilePlot', 'Noise', 'BeaconPhase',
85 'CorrelationPlot',
86 'SpectraHeisScope','RTIfromSpectraHeis']
87
73 88 def __init__(self, plotter_queue):
74 89
75 90 # Thread.__init__(self)
@@ -79,13 +94,53 class PlotManager():
79 94 self.__lock = Lock()
80 95
81 96 self.plotInstanceDict = {}
97
98 self.__err = False
82 99 self.__stop = False
100 self.__realtime = False
101
102 def __handleError(self, name="", send_email=False):
103
104 err = traceback.format_exception(sys.exc_info()[0],
105 sys.exc_info()[1],
106 sys.exc_info()[2])
107
108 print "***** Error occurred in PlotManager *****"
109 print "***** [%s]: %s" %(name, err[-1])
110
111 message = "\nError ocurred in %s:\n" %name
112 message += "".join(err)
113
114 sys.stderr.write(message)
115
116 if not send_email:
117 return
118
119 import socket
120
121 subject = "SChain v%s: Error running %s\n" %(schainpy.__version__, name)
122
123 subtitle = "%s:\n" %(name)
124 subtitle += "Hostname: %s\n" %socket.gethostbyname(socket.gethostname())
125 subtitle += "Working directory: %s\n" %os.path.abspath("./")
126 # subtitle += "Configuration file: %s\n" %self.filename
127 subtitle += "Time: %s\n" %str(datetime.datetime.now())
128
129 adminObj = schainpy.admin.SchainNotify()
130 adminObj.sendAlert(message=message,
131 subject=subject,
132 subtitle=subtitle)
83 133
84 134 def run(self):
85 135
86 136 if self.__queue.empty():
87 137 return
88 138
139 if self.__err:
140 serial_data = self.__queue.get()
141 self.__queue.task_done()
142 return
143
89 144 self.__lock.acquire()
90 145
91 146 # if self.__queue.full():
@@ -115,7 +170,12 class PlotManager():
115 170 self.plotInstanceDict[plot_id] = className()
116 171
117 172 plotter = self.plotInstanceDict[plot_id]
118 plotter.run(dataPlot, plot_id, **kwargs)
173 try:
174 plotter.run(dataPlot, plot_id, **kwargs)
175 except:
176 self.__err = True
177 self.__handleError(plot_name, send_email=True)
178 break
119 179
120 180 self.__lock.release()
121 181
@@ -164,4 +224,14 class PlotManager():
164 224 while not self.isEmpty():
165 225 self.run()
166 226
167 self.close() No newline at end of file
227 self.close()
228
229 def isErrorDetected(self):
230
231 self.__lock.acquire()
232
233 err = self.__err
234
235 self.__lock.release()
236
237 return err No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now