Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
In this example we want to monitor a particular task.
If this task is aborted for any reason, we ask the
server for the job output. This could be mailed to the user.
#

...

!/usr/bin/env python2.

...

7

...

import ecflow
import time

def monitor_critical_task(ci, path_to_task):
    
    

...

# Query the server for any 

...

changes
    

...

if ci.news_local():
            
        

...

# get the incremental changes, and merge with defs stored on the Client 

...


        

...

ci.sync_local()
        
        

...

# check to see if definition exists in the 

...

server
        

...

defs 

...

=

...

 ci.get_defs()
        

...

if defs == None :
            

...

exit(0) # return
            
        

...

# find the task we are interested in

...

 

...


        

...

critical_task = defs.find_abs_node(path_to_task)
        

...

if critical_task == None:
            

...

# No such 

...

task
            

...

exit(0) # return
             
        

...

# Check to see if task was aborted, if it was email me the job 

...

output
        

...

if critical_task.get_state() == ecflow.State.aborted:
                
            

...

# Get the job 

...

output
            

...

the_aborted_task_

...

output = ci.get_file(path_to_task,'jobout')  
            

...

# email(the_aborted_task_output)

...


            

...

exit(0)
                

...

try:
    

...

# Create the client. This will read the default environment 

...

variables
    

...

ci 

...

=

...

 ecflow.Client("localhost", "4143")

    

...

# Continually monitor the 

...

suite
    

...

while 1:

        

...

monitor_critical_

...

task(ci, "/suite/critical_node

...

"

...

)

...


                
        

...

# Sleep for 5 minutes. 

...


        

...

# To avoid overloading server ensure sleep is 

...

> 60 seconds 

...


        

...

time.sleep(300)
        

...

except RuntimeError, e:
    

...

print str(e)