mode.proxy

Proxy to service.

Works like a service, but delegates to underlying service object.

class mode.proxy.ServiceProxy(*, loop: asyncio.events.AbstractEventLoop = None)[source]

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[source]
async add_runtime_dependency(service: mode.types.services.ServiceT) → mode.types.services.ServiceT[source]
async add_async_context(context: AsyncContextManager) → Any[source]
add_context(context: ContextManager) → Any[source]
async start() → None[source]
async maybe_start() → None[source]
async crash(reason: BaseException) → None[source]
async stop() → None[source]
service_reset() → None[source]
async restart() → None[source]
async wait_until_stopped() → None[source]
set_shutdown() → None[source]
property started
property crashed
property should_stop
property state
property label
property shortlabel
property beacon
abstract = False
logger = <Logger mode.proxy (WARNING)>
property crash_reason