Page History
...
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 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|