mode.threads

ServiceThread - Service that starts in a separate thread.

Will use the default thread pool executor (loop.set_default_executor()), unless you specify a specific executor instance.

Note: To stop something using the thread’s loop, you have to use the on_thread_stop callback instead of the on_stop callback.

class mode.threads.QueueServiceThread(*, loop: Optional[AbstractEventLoop] = None, thread_loop: Optional[AbstractEventLoop] = None, Worker: Optional[Type[WorkerThread]] = None, **kwargs: Any)

Service running in separate thread.

Uses a queue to run functions inside the thread, so you can delegate calls.

abstract: ClassVar[bool] = False

Set to True if this service class is abstract-only, meaning it will only be used as a base class.

async call_thread(fun: Callable[[...], Awaitable], *args: Any, **kwargs: Any) Any
async cast_thread(fun: Callable[[...], Awaitable], *args: Any, **kwargs: Any) None
logger: logging.Logger = <Logger mode.threads (WARNING)>
property method_queue: MethodQueue
async on_thread_started() None
async on_thread_stop() None
class mode.threads.QueuedMethod(promise: asyncio.Future, method: Callable[..., Awaitable[Any]], args: tuple[Any, ...], kwargs: dict[str, Any])

Describe a method to be called by thread.

args: tuple[Any, ...]

Alias for field number 2

kwargs: dict[str, Any]

Alias for field number 3

method: Callable[[...], Awaitable[Any]]

Alias for field number 1

promise: Future

Alias for field number 0

class mode.threads.ServiceThread(*, loop: Optional[AbstractEventLoop] = None, thread_loop: Optional[AbstractEventLoop] = None, Worker: Optional[Type[WorkerThread]] = None, **kwargs: Any)

Service subclass running within a dedicated thread.

Worker

alias of WorkerThread

abstract: ClassVar[bool] = False

Set to True if this service class is abstract-only, meaning it will only be used as a base class.

async crash(exc: BaseException) None

Crash the service and all child services.

last_wakeup_at: float = 0.0
logger: logging.Logger = <Logger mode.threads (WARNING)>
async maybe_start() bool

Start the service, if it has not already been started.

on_crash(msg: str, *fmt: Any, **kwargs: Any) None
async on_thread_started() None
async on_thread_stop() None
set_shutdown() None

Set the shutdown signal.

Notes

If wait_for_shutdown is set, stopping the service will wait for this flag to be set.

async start() None
async stop() None

Stop the service.

wait_for_shutdown: bool = True

Set to True if .stop must wait for the shutdown flag to be set.

wait_for_thread: bool = True

Set this to False if s.start() should not wait for the underlying thread to be fully started.

class mode.threads.WorkerThread(service: ServiceThread, **kwargs: Any)

Thread class used for services running in a dedicated thread.

is_stopped: Event
run() None

Method representing the thread’s activity.

You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.

service: ServiceThread
stop() None