Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Horizontal Navigation Bar


Button Group

Button Hyperlink
titlePrevious
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Limits
Button Hyperlink
titleUp
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Advanced+Topics
Button Hyperlink
titleNext
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Alias


 

Sometimes tasks don't run as expected, and we want to get notification when this is the case.

...

Ecf Script

We will add a new task /test/f6/t1.
Create new ecf script file $HOME/course/test/f6/t1.ecf for which we want to be late.

 

Code Block
languagebash
title$HOME/course/test/f6/t1.ecf
%include <head.h>
echo "I will now sleep for %SLEEP% seconds"
sleep %SLEEP%
%include <tail.h>

 

Text

Let us modify the suite definition file again

Code Block
# Definition of the suite test.
suite test
 edit ECF_INCLUDE "$HOME/course"    # replace $HOME with the path to your home directory
 edit ECF_HOME    "$HOME/course"

 family f6
      edit SLEEP 120
      task t1
           late -c +00:01 # set late flag if task take longer than a minute
 endfamily
endsuite

 

Python

Code Block
languagepy
title$HOME/course/test.py
#!/usr/bin/env python2.7
import os
import
from ecflow import Defs,Suite,Family,Task,Edit,Trigger,Complete,Event,Meter,Time,Day,Date,Label, \
     
def create_family_f6():
        
f6
 
=
 
ecflow.Family("f6")
    
f6.add_variable("SLEEP", 120)
RepeatString,RepeatInteger,RepeatDate,InLimit,Limit
       
t1
 
= f6.add_task("t1")

def create_family_f6() :
    late = 
ecflow.
Late()


    late.complete(0,1,True)  # hour,minute,relative,    set late flag if task take longer than a minute


    return 
t1.add_late(late) 
Family("f6",
    
return
 
f6
    
print
 
"Creating
 
suite
 
definition"
   
defs
 
= ecflow.Defs() suite = defs.add_suite("test") suite.add_variable("ECF_INCLUDE",
Edit(SLEEP=120),
                Task("t1",late))
     
print "Creating suite definition"   
home = os.path.join(os.getenv("HOME"),
 
"course")
) suite.add_variable("ECF_HOME",

defs = Defs( 
        Suite("test",
            
os.path.join(os.getenv("HOME"),  "course")) suite.add_family(
Edit(ECF_INCLUDE=home,ECF_HOME=home),
            create_family_f6()
))
print(defs) 
defs


print
("Checking job creation: .ecf -> .job0"
)  
print
(defs.check_job_creation())

print("Checking trigger expressions")
assert len(defs.check()) == 0,defs.check() 

print("Saving definition to file 'test.def'")
defs.save_as_defs("test.def")


What to do

  1. Type in the changes
  2. Replace the suite definition
  3. Run the suite, you should see the task late flag set in ecflow_ui

...