...
Sometimes tasks don't run as expected, as and we need want to get notification when they are latethis is the case.
For this we use the late attribute.
A node can only have one late attribute. The late attribute can be add to a suite/family however and only applies to a task. You can define it on a Suite/Family in which case it will be inherited by the task.Note: only a task can be late. Any late defined lower down the hierarchy will override the aspect(submitted,active, complete) defined higher up.
- -s submitted: The time node can stay submitted (format [+]hh:mm). submitted is always relative, so + is simple ignored, if present. If the node stays submitted longer than the time specified, the late flag is set
- -a Active : The time of day the node must have become active (format hh:mm). If the node is still queued or submitted, the late flag is set
- -c Complete : The time node must become complete (format {+}hh:mm). If relative, time is taken from the time the node became active, otherwise node must be complete by the time given.
Ecf Script
We will add a new task /test/f6/t1.
Create new ecf script file $HOME/course/test/f6/t1.ecf to use these variables.
Code Block | ||
---|---|---|
| ||
%include <head.h> 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" edit ECF_HOME "$HOME/course" family f6 edit SLEEP 120 late -c +00:01 # warn if task take longer than a minute endfamily endfamily endsuite |
Python
#!/usr/bin/env python2.7
import os
import ecflow
def create_family_f6():
f6 = ecflow.Family("f6")
f6.add_variable("SLEEP", 120)
t1 = f6.add_task("t1")
late = ecflow.Late()
late.complete(ecflow.TimeSlot(0,1),True)
t1.add_late(late)
t1.add_late( ecflow.RepeatDate("DATE", 20101230, 20110105) )
return f6
print "Creating suite definition"
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"), "course"))
suite.add_variable("ECF_HOME", os.path.join(os.getenv("HOME"), "course"))
suite.add_family( create_family_f6() )
print defs
print "Checking job creation: .ecf -> .job0"
print defs.check_job_creation()
print "Saving definition to file 'test.def'"
defs.save_as_defs("test.def")
What to do
- Type in the changes
- Replace the suite definition
- How many times will /test/f4/f5/t1 run?
- In ecflow_ui , try to modify the values of a repeat
Run the suite, you should see the task late flag set in ecflow_ui
Button Group | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|