ecflow.Meter

class ecflow.Meter

Bases: pybind11_object

meters can be used to indicate proportional completion of task

They are able to trigger another job, which is waiting on this proportion. Can also be used to indicate progress of a job. Meters can be used in trigger and complete expression.

Constructor:

Meter(name,min,max,<optional>color_change)
   string name                : The meter name
   int min                    : The minimum and initial meter value
   int max                    : The maximum meter value. Must be greater than min value.
   int color_change<optional> : default = max, Must be between min-max, used in the GUI

Exceptions:

  • raises IndexError when an invalid Meter is specified

Usage:

Using a meter requires:

  • Defining a meter on a task:

meter = Meter('progress',0,100,100)
task.add_meter(meter)
ecflow_client --init=$$
for i in 10 20 30 40 50 60 80 100; do
    ecflow_client --meter=progress $i
    sleep 2 # or do some work
done
ecflow_client --complete
  • Optionally addition in a trigger or complete expression for job control:

    trigger task:progress ge 60
    

    trigger and complete expression should avoid using equality i.e.:

    trigger task:progress == 60
    

    Due to network issues the meter event’s may not arrive in sequential order hence the ecflow_server will ignore meter value’s, which are less than the current value as a result triggers’s which use meter equality may never evaluate

Meter.color_change(self: ecflow.Meter) int

returns the color change

Meter.empty(self: ecflow.Meter) bool

Return true if the Meter is empty. Used when returning a NULL Meter, from a find

Meter.max(self: ecflow.Meter) int

Return the Meters maximum value

Meter.min(self: ecflow.Meter) int

Return the Meters minimum value

Meter.name(self: ecflow.Meter) str

Return the Meters name as string

Meter.value(self: ecflow.Meter) int

Return meters current value