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

Version 1 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

The previous examples all effect how tasks are constrained.

However, we may also need to constrain how many suites/families are allowed to run in parallel.

In the exercise below we will limit families.

When a family is limited, the child tasks are unconstrained. In this case only two family can run at  a time. All the tasks in the family can start at once

Text

Let us modify our suite definition file:

# Definition of the suite test.
suite test
 edit ECF_INCLUDE "$HOME/course"
 edit ECF_HOME    "$HOME/course"
 limit fam 2
 family lf1
     inlimit -n fam
     task t1
     task t2
 endfamily
 family lf2
     inlimit -n fam
     task t1
     task t2
 endfamily
 family lf3
     inlimit -n fam
     task t1
     task t2
 endfamily
endsuite

Python

$HOME/course/test.py
import os
from ecflow import Defs,Suite,Family,Task,Edit,Trigger,Complete,Event,Meter,Time,Day,Date,Label, \
                   RepeatString,RepeatInteger,RepeatDate,InLimit,Limit
        
def create_family(name) :
    return Family(name,
            # limit_name(fam),limit_path(""),no_of_tokens_to_consume(1),limit node(False), limit submission(True)
            InLimit("fam","",1,True,False), 
            Edit(SLEEP=20),
            [ Task('t{}'.format(i)) for i in range(1,2) ] )
    
print("Creating suite definition")  
home = os.path.join(os.getenv("HOME"),"course")
defs = Defs( 
        Suite("test",
            Edit(ECF_INCLUDE=home,ECF_HOME=home),
            Limit("fan",2),
            create_family("lf1"),create_family("lf2"),create_family("lf3") ))
print(defs) 

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

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

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

What to do

  1. Edit the changes
  2. Replace the suite definition
  3. In ecflow_ui , observe the effects
  4. Change the value of the limit and inlimit, observe the effect.
  • No labels