ecFlow's documentation is now on readthedocs!

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

This page contains macros or features from a plugin which requires a valid license.

You will need to contact your administrator.

Previous Up Next

 

Sometimes tasks don't run as expected, and we want to get notification when this is the case.
For this we use the late attribute.
A node can only have one late attribute. The late attribute only applies to a task. You can define it on a Suite/Family in which case it will be inherited. 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.

 

Late example
task t1 
   late -s +00:15 -a 20:00 -c +02:00

This is interpreted as: the node can stay submitted for a maximum of 15 minutes, and it must become active by 20:00 and the runtime must not exceed 2 hours.

 

For the purposes of this tutorial  we add a late attribute for the runtime only.

   

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.

 

%include <head.h>
sleep %SLEEP%
%include <tail.h>

 

Text

Let us modify the suite definition file again

# 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
      late -c +00:01 # set late flag 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(0,1,True) # hour,minute,relative, set late flag if task take longer than a minute
t1.add_late(late)  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

  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

 

  • No labels