Forecast cycles with horizon#
About#
This example demonstrates the horizon option for date-based cycles (as_intervals = False).
Three initialization dates are defined (2020-01-01, 2020-01-02, 2020-01-03), each producing
a 5-day forecast. The horizon = 5D setting computes end_date = begin_date + 5 days
for every cycle, making end_date and
duration available in templates via cycle_end_date and
cycle_duration — without making is_interval True.
forecast task:
Prints the initialization date (
cycle_begin_date) and the forecast end date (cycle_end_date)Illustrates that a single-date cycle can carry a forecast window alongside its anchor date
Cycles run independently (
indep = True) since forecasts do not depend on each other
Path: examples/academic/horizon.
Configuring#
workflow.cfg#[app]
name=academic_horizon
[cycles]
begin_date=2020-01-01
end_date=2020-01-03
freq=1D
as_intervals=False
horizon=5D
indep=True
[stages]
[[cycles]]
seq0=forecast
tasks.cfg#[forecast]
[[content]]
commandline=echo "Init: {{ cycle_begin_date.strftime('%Y-%m-%d') }} End: {{ cycle_end_date.strftime('%Y-%m-%d') }} ({{ cycle_duration.days }}d horizon)"
Running#
Overview#
Let’s have an overview of stages before running the workflow.
$ woom show overview
##################################### APP ######################################
name: academic_horizon
################################## TASK TREE ###################################
cycles:
- seq0: forecast
#################################### CYCLES ####################################
2020-01-01T00:00:00+00:00 +5 days 00:00:00
2020-01-02T00:00:00+00:00 +5 days 00:00:00
2020-01-03T00:00:00+00:00 +5 days 00:00:00
################################### ENSEMBLE ###################################
no member
Dry run#
Now let’s run the workflow in test (dry) and debug modes.
$ woom run --log-no-color --log-level debug --dry-run
woom.log : DEBUG *** STARTED LOG SESSION ***
woom.cli : DEBUG Run the workflow
woom.cli : DEBUG Loading extensions
woom.cli : INFO No extension to load
woom.cli : DEBUG Load workflow config: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/workflow.cfg
woom.cli : INFO Loaded workflow config
woom.cli : INFO App name: academic_horizon
woom.cli : DEBUG Initialize the host manager
woom.cli : INFO Initialized the host manager
woom.cli : DEBUG Load hosts config file: hosts.cfg
woom.cli : INFO Loaded hosts config file: hosts.cfg
woom.cli : DEBUG Infer host
woom.cli : INFO Infered host: local
woom.cli : DEBUG Initialize the task manager
woom.cli : INFO Initialized the task manager
woom.cli : DEBUG Load the task config file: tasks.cfg
woom.cli : INFO Loaded the task config file: tasks.cfg
woom.cli : DEBUG Initialize the workflow
woom.workflow: DEBUG Task tree:
cycles:
- seq0: forecast
woom.cli : INFO Initialized the workflow
woom.cli : INFO Successfully setup the workflow!
woom.cli : DEBUG Run the workflow
woom.workflow: DEBUG Running the workflow in fake mode
woom.workflow: DEBUG Entering stage: prolog
woom.workflow: DEBUG No sequence of task. Skipping...
woom.workflow: DEBUG Entering stage: cycles
woom.workflow: INFO Cycling on independant dates from 2020-01-01 00:00:00+00:00 to 2020-01-03 00:00:00+00:00 in 3 time(s)
woom.workflow: DEBUG Running cycle: 2020-01-01T00:00:00+00:00 +5 days 00:00:00
woom.workflow: DEBUG Entering sequence: seq0
woom.workflow: DEBUG Running task: cycles/seq0/forecast
woom.workflow: DEBUG Task path: academic_horizon/2020-01-01T00:00:00+00:00/forecast
woom.workflow: DEBUG Cleaning task: cycles/seq0/forecast
woom.workflow: DEBUG Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00
woom.job : INFO Started job manager: BackgroundJobManager()
woom.workflow: DEBUG Submitting task: cycles/seq0/forecast
woom.workflow: DEBUG Dependencies:
woom.workflow: DEBUG Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast
woom.workflow: INFO Fake submission: academic_horizon/2020-01-01T00:00:00+00:00/forecast → bash /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.sh
woom.workflow: DEBUG Fake submission:
--------------- submission command ---------------
bash /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.sh
-------------- batch script content --------------
#!/bin/bash
# Prolog
set -eo pipefail
# - handler for graceful termination
on_sigterm() {
echo "Received termination signal, cleaning up..."
# Just exit cleanly, let on_exit handle status
exit 0
}
# - handler for killing termination
on_sigkill() {
echo "Received kill signal, cleaning up..." >&2
# Just exit cleanly, let on_exit handle status
exit 1
}
# - handler for exit (always called)
on_exit() {
status=$?
if [ ! -f "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.terminating" ]; then
echo $status > "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.status"
fi
exit $status
}
trap on_sigterm SIGKILL
trap on_sigkill SIGTERM SIGINT
trap on_exit EXIT
# Environment variables
export WOOM_TASK_NAME="forecast"
export WOOM_RUN_DIR="/home/docs/woom/scratch/woom/academic_horizon/2020-01-01T00:00:00+00:00/forecast"
export WOOM_WORKFLOW="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/workflow.cfg"
export WOOM_HOST="local"
export WOOM_TASKMANAGER="/home/docs/checkouts/readthedocs.org/user_builds/woom/envs/latest/lib/python3.11/site-packages/woom/tasks.cfg:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/tasks.cfg"
export WOOM_JOBMANAGER="BackgroundJobManager"
export WOOM_TASK_TREE_CYCLES_SEQ0="['forecast']"
export WOOM_CYCLES="2020-01-01T00:00:00+00:00:2020-01-02T00:00:00+00:00:2020-01-03T00:00:00+00:00"
export WOOM_NMEMBERS="0"
export WOOM_MEMBERS=""
export WOOM_PATHS_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin"
export WOOM_PATHS_PYTHONPATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python"
export WOOM_PATHS_LIBRARY_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib"
export WOOM_PATHS_INCLUDE_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include"
export WOOM_APP_PATH="academic_horizon"
export WOOM_APP_NAME="academic_horizon"
export WOOM_APP_CONF=""
export WOOM_APP_EXP=""
export WOOM_CYCLES_BEGIN_DATE="2020-01-01T00:00:00+00:00"
export WOOM_CYCLES_END_DATE="2020-01-03T00:00:00+00:00"
export WOOM_CYCLES_FREQ="1D"
export WOOM_CYCLES_AS_INTERVALS="0"
export WOOM_CYCLES_HORIZON="P5DT0H0M0S"
export WOOM_CYCLES_INDEP="1"
export WOOM_CYCLES_ROUND=""
export WOOM_CYCLES_NCYCLES="0"
export WOOM_SCRATCH_DIR="/home/docs/woom/scratch"
export WOOM_WORK_DIR="/home/docs/woom/work"
export WOOM_WORKFLOW_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon"
export WOOM_LOG_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/log"
export WOOM_CYCLE="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_BEGIN_DATE="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_LABEL="2020-01-01T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_DATE="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_END_DATE="2020-01-06T00:00:00+00:00"
export WOOM_CYCLE_DURATION="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST="1"
export WOOM_CYCLE_IS_LAST="0"
export WOOM_CYCLE_NEXT="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_PREV=""
export WOOM_CYCLE_BEGIN_DATE_NEXT="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_LABEL_NEXT="2020-01-02T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN_NEXT="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_DATE_NEXT="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_END_DATE_NEXT="2020-01-07T00:00:00+00:00"
export WOOM_CYCLE_DURATION_NEXT="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST_NEXT="0"
export WOOM_CYCLE_IS_LAST_NEXT="0"
export WOOM_CYCLE_NEXT_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_PREV_NEXT="2020-01-01T00:00:00+00:00"
export WOOM_MEMBER=""
export WOOM_TASK="forecast"
export WOOM_TASK_PATH="academic_horizon/2020-01-01T00:00:00+00:00/forecast"
export WOOM_TASK_RUN_DIR="/home/docs/woom/scratch/woom/academic_horizon/2020-01-01T00:00:00+00:00/forecast"
export WOOM_TASK_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast"
export WOOM_TASK_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.sh"
export WOOM_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast"
export WOOM_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.sh"
export WOOM_TASK_ENV=""
export WOOM_ENV=""
export WOOM_TASK_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/context.json"
export WOOM_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/context.json"
export PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin:$PATH
export PYTHONPATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python:$PYTHONPATH
export LIBRARY_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib:$LIBRARY_PATH
export INCLUDE_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include:$INCLUDE_PATH
# Go to run dir
{ mkdir -p /home/docs/woom/scratch/woom/academic_horizon/2020-01-01T00:00:00+00:00/forecast; cd /home/docs/woom/scratch/woom/academic_horizon/2020-01-01T00:00:00+00:00/forecast; } || exit 1
# Run the commandline(s)
echo "Init: 2020-01-01 End: 2020-01-06 (5d horizon)"
--------------------------------------------------
woom.workflow: INFO Submitted task: cycles/seq0/forecast with job id 99370
woom.workflow: INFO Successfully submitted cycle: 2020-01-01T00:00:00+00:00 +5 days 00:00:00
woom.workflow: DEBUG Running cycle: 2020-01-02T00:00:00+00:00 +5 days 00:00:00
woom.workflow: DEBUG Entering sequence: seq0
woom.workflow: DEBUG Running task: cycles/seq0/forecast
woom.workflow: DEBUG Task path: academic_horizon/2020-01-02T00:00:00+00:00/forecast
woom.workflow: DEBUG Cleaning task: cycles/seq0/forecast
woom.workflow: DEBUG Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00
woom.workflow: DEBUG Submitting task: cycles/seq0/forecast
woom.workflow: DEBUG Dependencies:
woom.workflow: DEBUG Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast
woom.workflow: INFO Fake submission: academic_horizon/2020-01-02T00:00:00+00:00/forecast → bash /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.sh
woom.workflow: DEBUG Fake submission:
--------------- submission command ---------------
bash /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.sh
-------------- batch script content --------------
#!/bin/bash
# Prolog
set -eo pipefail
# - handler for graceful termination
on_sigterm() {
echo "Received termination signal, cleaning up..."
# Just exit cleanly, let on_exit handle status
exit 0
}
# - handler for killing termination
on_sigkill() {
echo "Received kill signal, cleaning up..." >&2
# Just exit cleanly, let on_exit handle status
exit 1
}
# - handler for exit (always called)
on_exit() {
status=$?
if [ ! -f "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.terminating" ]; then
echo $status > "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.status"
fi
exit $status
}
trap on_sigterm SIGKILL
trap on_sigkill SIGTERM SIGINT
trap on_exit EXIT
# Environment variables
export WOOM_TASK_NAME="forecast"
export WOOM_RUN_DIR="/home/docs/woom/scratch/woom/academic_horizon/2020-01-02T00:00:00+00:00/forecast"
export WOOM_WORKFLOW="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/workflow.cfg"
export WOOM_HOST="local"
export WOOM_TASKMANAGER="/home/docs/checkouts/readthedocs.org/user_builds/woom/envs/latest/lib/python3.11/site-packages/woom/tasks.cfg:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/tasks.cfg"
export WOOM_JOBMANAGER="BackgroundJobManager"
export WOOM_TASK_TREE_CYCLES_SEQ0="['forecast']"
export WOOM_CYCLES="2020-01-01T00:00:00+00:00:2020-01-02T00:00:00+00:00:2020-01-03T00:00:00+00:00"
export WOOM_NMEMBERS="0"
export WOOM_MEMBERS=""
export WOOM_PATHS_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin"
export WOOM_PATHS_PYTHONPATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python"
export WOOM_PATHS_LIBRARY_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib"
export WOOM_PATHS_INCLUDE_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include"
export WOOM_APP_PATH="academic_horizon"
export WOOM_APP_NAME="academic_horizon"
export WOOM_APP_CONF=""
export WOOM_APP_EXP=""
export WOOM_CYCLES_BEGIN_DATE="2020-01-01T00:00:00+00:00"
export WOOM_CYCLES_END_DATE="2020-01-03T00:00:00+00:00"
export WOOM_CYCLES_FREQ="1D"
export WOOM_CYCLES_AS_INTERVALS="0"
export WOOM_CYCLES_HORIZON="P5DT0H0M0S"
export WOOM_CYCLES_INDEP="1"
export WOOM_CYCLES_ROUND=""
export WOOM_CYCLES_NCYCLES="0"
export WOOM_SCRATCH_DIR="/home/docs/woom/scratch"
export WOOM_WORK_DIR="/home/docs/woom/work"
export WOOM_WORKFLOW_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon"
export WOOM_LOG_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/log"
export WOOM_CYCLE="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_BEGIN_DATE="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_LABEL="2020-01-02T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_DATE="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_END_DATE="2020-01-07T00:00:00+00:00"
export WOOM_CYCLE_DURATION="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST="0"
export WOOM_CYCLE_IS_LAST="0"
export WOOM_CYCLE_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_PREV="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_BEGIN_DATE_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_LABEL_NEXT="2020-01-03T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_DATE_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_END_DATE_NEXT="2020-01-08T00:00:00+00:00"
export WOOM_CYCLE_DURATION_NEXT="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST_NEXT="0"
export WOOM_CYCLE_IS_LAST_NEXT="1"
export WOOM_CYCLE_NEXT_NEXT=""
export WOOM_CYCLE_PREV_NEXT="2020-01-02T00:00:00+00:00"
export WOOM_MEMBER=""
export WOOM_TASK="forecast"
export WOOM_TASK_PATH="academic_horizon/2020-01-02T00:00:00+00:00/forecast"
export WOOM_TASK_RUN_DIR="/home/docs/woom/scratch/woom/academic_horizon/2020-01-02T00:00:00+00:00/forecast"
export WOOM_TASK_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast"
export WOOM_TASK_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.sh"
export WOOM_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast"
export WOOM_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.sh"
export WOOM_TASK_ENV=""
export WOOM_ENV=""
export WOOM_TASK_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/context.json"
export WOOM_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/context.json"
export WOOM_CYCLE_BEGIN_DATE_PREV="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_LABEL_PREV="2020-01-01T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN_PREV="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_DATE_PREV="2020-01-01T00:00:00+00:00"
export WOOM_CYCLE_END_DATE_PREV="2020-01-06T00:00:00+00:00"
export WOOM_CYCLE_DURATION_PREV="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST_PREV="1"
export WOOM_CYCLE_IS_LAST_PREV="0"
export WOOM_CYCLE_NEXT_PREV="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_PREV_PREV=""
export PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin:$PATH
export PYTHONPATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python:$PYTHONPATH
export LIBRARY_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib:$LIBRARY_PATH
export INCLUDE_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include:$INCLUDE_PATH
# Go to run dir
{ mkdir -p /home/docs/woom/scratch/woom/academic_horizon/2020-01-02T00:00:00+00:00/forecast; cd /home/docs/woom/scratch/woom/academic_horizon/2020-01-02T00:00:00+00:00/forecast; } || exit 1
# Run the commandline(s)
echo "Init: 2020-01-02 End: 2020-01-07 (5d horizon)"
--------------------------------------------------
woom.workflow: INFO Submitted task: cycles/seq0/forecast with job id 785322
woom.workflow: INFO Successfully submitted cycle: 2020-01-02T00:00:00+00:00 +5 days 00:00:00
woom.workflow: DEBUG Running cycle: 2020-01-03T00:00:00+00:00 +5 days 00:00:00
woom.workflow: DEBUG Entering sequence: seq0
woom.workflow: DEBUG Running task: cycles/seq0/forecast
woom.workflow: DEBUG Task path: academic_horizon/2020-01-03T00:00:00+00:00/forecast
woom.workflow: DEBUG Cleaning task: cycles/seq0/forecast
woom.workflow: DEBUG Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00
woom.workflow: DEBUG Submitting task: cycles/seq0/forecast
woom.workflow: DEBUG Dependencies:
woom.workflow: DEBUG Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast
woom.workflow: INFO Fake submission: academic_horizon/2020-01-03T00:00:00+00:00/forecast → bash /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.sh
woom.workflow: DEBUG Fake submission:
--------------- submission command ---------------
bash /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.sh
-------------- batch script content --------------
#!/bin/bash
# Prolog
set -eo pipefail
# - handler for graceful termination
on_sigterm() {
echo "Received termination signal, cleaning up..."
# Just exit cleanly, let on_exit handle status
exit 0
}
# - handler for killing termination
on_sigkill() {
echo "Received kill signal, cleaning up..." >&2
# Just exit cleanly, let on_exit handle status
exit 1
}
# - handler for exit (always called)
on_exit() {
status=$?
if [ ! -f "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.terminating" ]; then
echo $status > "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.status"
fi
exit $status
}
trap on_sigterm SIGKILL
trap on_sigkill SIGTERM SIGINT
trap on_exit EXIT
# Environment variables
export WOOM_TASK_NAME="forecast"
export WOOM_RUN_DIR="/home/docs/woom/scratch/woom/academic_horizon/2020-01-03T00:00:00+00:00/forecast"
export WOOM_WORKFLOW="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/workflow.cfg"
export WOOM_HOST="local"
export WOOM_TASKMANAGER="/home/docs/checkouts/readthedocs.org/user_builds/woom/envs/latest/lib/python3.11/site-packages/woom/tasks.cfg:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/tasks.cfg"
export WOOM_JOBMANAGER="BackgroundJobManager"
export WOOM_TASK_TREE_CYCLES_SEQ0="['forecast']"
export WOOM_CYCLES="2020-01-01T00:00:00+00:00:2020-01-02T00:00:00+00:00:2020-01-03T00:00:00+00:00"
export WOOM_NMEMBERS="0"
export WOOM_MEMBERS=""
export WOOM_PATHS_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin"
export WOOM_PATHS_PYTHONPATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python"
export WOOM_PATHS_LIBRARY_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib"
export WOOM_PATHS_INCLUDE_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include"
export WOOM_APP_PATH="academic_horizon"
export WOOM_APP_NAME="academic_horizon"
export WOOM_APP_CONF=""
export WOOM_APP_EXP=""
export WOOM_CYCLES_BEGIN_DATE="2020-01-01T00:00:00+00:00"
export WOOM_CYCLES_END_DATE="2020-01-03T00:00:00+00:00"
export WOOM_CYCLES_FREQ="1D"
export WOOM_CYCLES_AS_INTERVALS="0"
export WOOM_CYCLES_HORIZON="P5DT0H0M0S"
export WOOM_CYCLES_INDEP="1"
export WOOM_CYCLES_ROUND=""
export WOOM_CYCLES_NCYCLES="0"
export WOOM_SCRATCH_DIR="/home/docs/woom/scratch"
export WOOM_WORK_DIR="/home/docs/woom/work"
export WOOM_WORKFLOW_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon"
export WOOM_LOG_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/log"
export WOOM_CYCLE="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_BEGIN_DATE="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_LABEL="2020-01-03T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_DATE="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_END_DATE="2020-01-08T00:00:00+00:00"
export WOOM_CYCLE_DURATION="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST="0"
export WOOM_CYCLE_IS_LAST="1"
export WOOM_CYCLE_NEXT=""
export WOOM_CYCLE_PREV="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_BEGIN_DATE_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_LABEL_NEXT="2020-01-03T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_DATE_NEXT="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_END_DATE_NEXT="2020-01-08T00:00:00+00:00"
export WOOM_CYCLE_DURATION_NEXT="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST_NEXT="0"
export WOOM_CYCLE_IS_LAST_NEXT="1"
export WOOM_CYCLE_NEXT_NEXT=""
export WOOM_CYCLE_PREV_NEXT="2020-01-02T00:00:00+00:00"
export WOOM_MEMBER=""
export WOOM_TASK="forecast"
export WOOM_TASK_PATH="academic_horizon/2020-01-03T00:00:00+00:00/forecast"
export WOOM_TASK_RUN_DIR="/home/docs/woom/scratch/woom/academic_horizon/2020-01-03T00:00:00+00:00/forecast"
export WOOM_TASK_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast"
export WOOM_TASK_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.sh"
export WOOM_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast"
export WOOM_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.sh"
export WOOM_TASK_ENV=""
export WOOM_ENV=""
export WOOM_TASK_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/context.json"
export WOOM_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/context.json"
export WOOM_CYCLE_BEGIN_DATE_PREV="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_LABEL_PREV="2020-01-02T00:00:00+00:00 +5 days 00:00:00"
export WOOM_CYCLE_TOKEN_PREV="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_DATE_PREV="2020-01-02T00:00:00+00:00"
export WOOM_CYCLE_END_DATE_PREV="2020-01-07T00:00:00+00:00"
export WOOM_CYCLE_DURATION_PREV="P5DT0H0M0S"
export WOOM_CYCLE_IS_FIRST_PREV="0"
export WOOM_CYCLE_IS_LAST_PREV="0"
export WOOM_CYCLE_NEXT_PREV="2020-01-03T00:00:00+00:00"
export WOOM_CYCLE_PREV_PREV="2020-01-01T00:00:00+00:00"
export PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/bin:$PATH
export PYTHONPATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib/python:$PYTHONPATH
export LIBRARY_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/lib:$LIBRARY_PATH
export INCLUDE_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/include:$INCLUDE_PATH
# Go to run dir
{ mkdir -p /home/docs/woom/scratch/woom/academic_horizon/2020-01-03T00:00:00+00:00/forecast; cd /home/docs/woom/scratch/woom/academic_horizon/2020-01-03T00:00:00+00:00/forecast; } || exit 1
# Run the commandline(s)
echo "Init: 2020-01-03 End: 2020-01-08 (5d horizon)"
--------------------------------------------------
woom.workflow: INFO Submitted task: cycles/seq0/forecast with job id 234474
woom.workflow: INFO Successfully submitted cycle: 2020-01-03T00:00:00+00:00 +5 days 00:00:00
woom.workflow: DEBUG Entering stage: epilog
woom.workflow: DEBUG No sequence of task. Skipping...
woom.workflow: DEBUG Terminating non-blocking jobs
woom.cli : INFO Successfully ran the workflow!
Normal run#
And finally in run it.
$ woom run --log-no-color
woom.cli : INFO No extension to load
woom.cli : INFO Loaded workflow config
woom.cli : INFO App name: academic_horizon
woom.cli : INFO Initialized the host manager
woom.cli : INFO Loaded hosts config file: hosts.cfg
woom.cli : INFO Infered host: local
woom.cli : INFO Initialized the task manager
woom.cli : INFO Loaded the task config file: tasks.cfg
woom.cli : INFO Initialized the workflow
woom.cli : INFO Successfully setup the workflow!
woom.workflow: INFO Cycling on independant dates from 2020-01-01 00:00:00+00:00 to 2020-01-03 00:00:00+00:00 in 3 time(s)
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00
woom.job : INFO Started job manager: BackgroundJobManager()
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast
woom.workflow: INFO Created batch script: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast/job.sh
woom.workflow: INFO Submitted task: cycles/seq0/forecast with job id 915
woom.workflow: INFO Successfully submitted cycle: 2020-01-01T00:00:00+00:00 +5 days 00:00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast
woom.workflow: INFO Created batch script: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast/job.sh
woom.workflow: INFO Submitted task: cycles/seq0/forecast with job id 917
woom.workflow: INFO Successfully submitted cycle: 2020-01-02T00:00:00+00:00 +5 days 00:00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00
woom.workflow: INFO Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast
woom.workflow: INFO Created batch script: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/horizon/jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast/job.sh
woom.workflow: INFO Submitted task: cycles/seq0/forecast with job id 919
woom.workflow: INFO Successfully submitted cycle: 2020-01-03T00:00:00+00:00 +5 days 00:00:00
woom.cli : INFO Successfully ran the workflow!
Check status#
Check what is running or finished.
$ woom show status
╭──────────┬─────────┬──────────┬───────────────────────────┬──────────────────────────────────────────────────────────╮
│ STATUS │ JOBID │ TASK │ CYCLE │ SUBMISSION DIR │
├──────────┼─────────┼──────────┼───────────────────────────┼──────────────────────────────────────────────────────────┤
│ SUCCESS │ 915 │ forecast │ 2020-01-01T00:00:00+00:00 │ jobs/academic_horizon/2020-01-01T00:00:00+00:00/forecast │
│ SUCCESS │ 917 │ forecast │ 2020-01-02T00:00:00+00:00 │ jobs/academic_horizon/2020-01-02T00:00:00+00:00/forecast │
│ SUCCESS │ 919 │ forecast │ 2020-01-03T00:00:00+00:00 │ jobs/academic_horizon/2020-01-03T00:00:00+00:00/forecast │
╰──────────┴─────────┴──────────┴───────────────────────────┴──────────────────────────────────────────────────────────╯
Show run directories#
Show where tasks were executed.
$ woom show run_dirs
╭──────────┬───────────────────────────┬──────────────────────────────────────────────────────────────────────────────────╮
│ TASK │ CYCLE │ RUN DIR │
├──────────┼───────────────────────────┼──────────────────────────────────────────────────────────────────────────────────┤
│ forecast │ 2020-01-01T00:00:00+00:00 │ /home/docs/woom/scratch/woom/academic_horizon/2020-01-01T00:00:00+00:00/forecast │
│ forecast │ 2020-01-02T00:00:00+00:00 │ /home/docs/woom/scratch/woom/academic_horizon/2020-01-02T00:00:00+00:00/forecast │
│ forecast │ 2020-01-03T00:00:00+00:00 │ /home/docs/woom/scratch/woom/academic_horizon/2020-01-03T00:00:00+00:00/forecast │
╰──────────┴───────────────────────────┴──────────────────────────────────────────────────────────────────────────────────╯