Changeset 244 for tbroadcast/v2/python/tbroadcast.py
- Timestamp:
- Sep 7, 2006, 10:31:17 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tbroadcast/v2/python/tbroadcast.py
r243 r244 26 26 class Scheduler: 27 27 28 def __init__(self, num_workers=20, file=None, ignore_cycles=False, local=False, output=None ):28 def __init__(self, num_workers=20, file=None, ignore_cycles=False, local=False, output=None, error=None, silent = False): 29 29 self.pool = ThreadPool(num_workers=num_workers) 30 30 self.current_package = self.get_current_package() 31 31 self.current_project = {'name': None, 'path': None, 'version': None} 32 self.packages = {} 32 self.packages = {} 33 33 self.counter = 0 34 34 self.semaphore = BoundedSemaphore(1) … … 36 36 self.ignore_cycles = ignore_cycles 37 37 self.output = output 38 self.error = error 39 self.silent = silent 38 40 if output is not None: 39 41 if not os.path.exists (output): … … 48 50 if self.local: self.get_local_graph() 49 51 self.check_cycles() 52 53 # status, output = commands.getstatusoutput("cmt broadcast -local 'echo <package>'") 54 # lignes = string.split(output, '\n') 55 # i = 1 56 # for package in lignes: 57 # if package!='' and package[0] != '#': 58 # print i , package 59 # i =i +1 60 # if not self.packages.has_key(package): 61 # print package 62 # print len(self.packages) 63 # sys.exit(-1) 50 64 51 65 def get_current_project(self): … … 246 260 To_remove.append (key) 247 261 for item in To_remove: 248 self.packages.pop(item)262 del self.packages[item] 249 263 250 264 def simulate_execution(self): … … 409 423 print '# ('+str(self.get_counter())+'/'+str(len(self.packages))+') Now trying ['+ arg['cmd']+'] in ' + path 410 424 print '#--------------------------------------------------------------' 411 cmd = arg['cmd'] 412 status, output, error, pythonError = exeCommand(cmd)#,iTimeout = 3600) 425 cmd = arg['cmd'] 426 #status, output= commands.getstatusoutput(cmd) 427 # init output file 413 428 if self.output is not None: 414 f = open (self.output+'/'+arg['package']+'_output.log', 'w+')415 f.write (output)416 f.close()417 f = open (self.output+'/'+arg['package']+'_error.log', 'w+')418 f.write (str(error))419 f.close()429 f = open (self.output+'/'+arg['package']+'_output.log', 'w+') 430 f.close() 431 if self.error is not None: 432 f = open (self.error+'/'+arg['package']+'_error.log', 'w+') 433 f.close() 434 status, output, error, pythonError = exeCommand(sCmd=cmd, oLineCallback=self.redirectOutput, arg=arg)#,iTimeout = 3600) 420 435 self.suppress_work_unit (arg['package']) 421 436 self.set_work_unit_status (arg['package'], 'done') … … 424 439 # raise RuntimeError(output) 425 440 return {'output':output, 'cmd': arg['cmd'], 'package':arg['package']} 441 442 def redirectOutput(self, index, buffer, arg): 443 """Filter function to redirect the std output and error of the job 444 executable for real-time debugging 445 """ 446 if self.output is not None: 447 if index==0: 448 f = open (self.output+'/'+arg['package']+'_output.log', 'a') 449 f.write (buffer+'\n') 450 f.close() 451 elif index==1: 452 if self.error is not None: 453 f = open (self.error+'/'+arg['package']+'_error.log', 'a') 454 else: 455 f = open (self.output+'/'+arg['package']+'_output.log', 'a') 456 f.write (buffer+'\n') 457 f.close() 458 if not self.silent: 459 print buffer 426 460 427 461 # this will be called when an exception occurs within a thread … … 433 467 print '#--------------------------------------------------------------' 434 468 sys.exit(-1) 469 470 435 471 #--------- EoF --------#
Note: See TracChangeset
for help on using the changeset viewer.