cobald.daemon.runners.thread_runner module

class cobald.daemon.runners.thread_runner.ThreadRunner(asyncio_loop: AbstractEventLoop)[source]

Bases: BaseRunner

Runner for subroutines with threading

Active payloads are not cancelled when the runner is closed. Only program termination forcefully cancels leftover payloads.

async aclose()[source]

Shut down this runner

flavour: Any = <module 'threading' from '/home/docs/.asdf/installs/python/3.11.6/lib/python3.11/threading.py'>
async manage_payloads()[source]

Implementation of managing payloads when run()

This method must continuously execute payloads sent to the runner. It may only return when stop() is called or if any orphaned payload return or raise. In the latter case, OrphanedReturn or the raised exception must re-raised by this method.

register_payload(payload)[source]

Register payload for background execution in a threadsafe manner

This runs payload as an orphaned background task as soon as possible. It is an error for payload to return or raise anything without handling it.

run_payload(payload)[source]

Execute payload and return its result in a threadsafe manner

This runs payload as soon as possible, blocking until completion. Should payload return or raise anything, it is propagated to the caller.