Observer Task

Observer tasks are tasks that are running constantly on the side. Observer tasks can be used for:

  • Monitoring the system

  • Hosting user interface or polling user inputs

  • Polling events or updates

Observer tasks are characterized as tasks that are not expected to complete and don’t have timeouts. Unlike other tasks, observer tasks are always immediately terminated when shutting down the scheduler regardless of the shutdown settings.

To set a task as an observer task, set permanent as True:

@app.task(permanent=True)
def monitor():
    while True:
        ...

Note

If you use threaded execution for observer task, you should periodically check the termination flag status:

from rocketry.args import TerminationFlag
from rocketry.exc import TaskTerminationException

@app.task(permanent=True)
def monitor(flag=TerminationFlag()):
    while not flag.is_set():
        ...
    raise TaskTerminationException()