Progress reporting for long running tasks#

[1]:
from oda_api.api import ProgressReporter
import time

Initialise ProgressReporter#

[2]:
pr = ProgressReporter()

Split your task into subtasks to enable progress report#

use ProgressReporter.report_progress method to send progress reports

[3]:
n_steps = 5
for step in range(n_steps):
    stage = f"simulation stage {step}"
    progress = 100 * step // n_steps
    n_substeps = 10

    # optionally define subtasks
    for substep in range(n_substeps):
        substage = f"subtask {substep}"
        subtask_progress = 100 * substep // n_substeps

        time.sleep(0.001) # replace this by actual calculation

        # report progress, optionally adding extra message
        message='some message'

        pr.report_progress(stage=stage, progress=progress, substage=substage, subprogress=subtask_progress, message=message)