Query Status from Plugins#
Other conda plugins can use Broker to make runtime decisions. Query
methods do not start the broker.
from conda_broker import Broker
service = Broker.current().service("package-cache")
check = service.check()
if check.ready:
query_local_metadata()
else:
query_repodata_directly()
status = check.status
Service.check() returns a compact report for plugin CLIs and JSON output.
When the broker is running, it distinguishes a known stopped service from an
unknown service:
check = Broker.current().service("package-cache").check()
if check.available:
print(check.to_dict())
else:
use_inline_fallback(reason=check.reason)
When the broker is stopped, check() returns
reason="broker-unavailable" without loading provider entry points. That
keeps hot-path conda hooks cheap even when many providers are installed.
Service.status() returns None when the service or broker is unavailable,
so optional integrations can safely fall back. Use
Broker.current().status("service-name") when you explicitly want provider
discovery and a strict query that errors for unknown services.
For services that expose a local API, check readiness and read the endpoint:
from conda_broker import Broker
service = Broker.current().service("package-cache")
if endpoint := service.endpoint(ready=True):
query_local_metadata(endpoint.url)
else:
query_repodata_directly()
Service.endpoint(ready=True) never starts the broker. It returns None
unless the service is already ready and the endpoint has a resolved URL.
Only explicit startup calls can start the broker:
from conda_broker import Broker
broker = Broker.current()
broker.start()
broker.service("package-cache").start()
broker.service("package-cache").wait(start=True)
For scripts that need a temporary service and want automatic cleanup, use a context manager:
from conda_broker import Broker
with Broker.current().service("package-cache").started(wait=True) as service:
if endpoint := service.endpoint(ready=True):
query_local_metadata(endpoint.url)
The context manager stops the service on exit only when it started the
service on entry. If it had to start the broker too, it stops that broker on
exit as well. With wait=True, failure to reach readiness raises
ServiceNotReadyError after cleanup.
Use startup calls in user-visible commands, not in hooks that run for every conda invocation.