mode.proxy¶
Proxy to service.
Works like a service, but delegates to underlying service object.
-
class
mode.proxy.ServiceProxy(*, loop: asyncio.events.AbstractEventLoop = None)¶ A service proxy delegates ServiceT methods to a composite service.
Example
>>> class MyServiceProxy(ServiceProxy): ... ... @cached_property ... def _service(self) -> ServiceT: ... return ActualService()
Notes
This is used by Faust, and probably useful elsewhere! The Faust App is created at module-level, and it uses service proxy to ensure the event loop is not also created just by importing a module.
-
add_dependency(service: mode.types.services.ServiceT) → mode.types.services.ServiceT¶
-
async
add_runtime_dependency(service: mode.types.services.ServiceT) → mode.types.services.ServiceT¶
-
async
add_async_context(context: AsyncContextManager) → Any¶
-
add_context(context: ContextManager) → Any¶
-
async
start() → None¶
-
async
maybe_start() → bool¶
-
async
crash(reason: BaseException) → None¶
-
async
stop() → None¶
-
service_reset() → None¶
-
async
restart() → None¶
-
async
wait_until_stopped() → None¶
-
set_shutdown() → None¶
-
property
started¶
-
property
crashed¶
-
property
should_stop¶
-
property
state¶
-
property
label¶
-
property
shortlabel¶
-
property
beacon¶
-
abstract: ClassVar[bool] = False¶
-
log= None¶
-
logger: logging.Logger = <Logger mode.proxy (WARNING)>¶
-
property
crash_reason¶
-