1212)
1313from tilebox .workflows .jobs .client import JobClient
1414from tilebox .workflows .jobs .service import JobService
15- from tilebox .workflows .observability .tracing import (
16- WorkflowTracer ,
17- )
15+ from tilebox .workflows .observability .tracing import WorkflowTracer
1816from tilebox .workflows .runner .task_runner import TaskRunner , _LeaseRenewer
1917from tilebox .workflows .runner .task_service import TaskService
2018
2119
2220class Client :
23- def __init__ (self , * , url : str = "https://api.tilebox.com" , token : str | None = None ) -> None :
21+ def __init__ (
22+ self , * , url : str = "https://api.tilebox.com" , token : str | None = None , name : str | None = None
23+ ) -> None :
2424 """
2525 Create a Tilebox workflows client.
2626
2727 Args:
2828 url: Tilebox API Url. Defaults to "https://api.tilebox.com".
2929 token: The API Key to authenticate with. If not set the `TILEBOX_API_KEY` environment variable will be used.
30+ name: An optional name of the client, used as service.name for telemetry. If not set, defaults to
31+ the service name provided by `tilebox.workflows.observability.tracing.configure_otel_tracing`,
32+ or "tilebox-python" if no external tracer is configured.
3033 """
3134 token = _token_from_env (url , token )
3235 self ._auth : dict [str , str ] = {"token" : token , "url" : url }
3336 self ._channel = open_channel (url , token )
37+ self ._tracer = WorkflowTracer (service = name , url = url , token = token )
3438
35- self ._tracer : WorkflowTracer | None = None
3639 self ._logger : logging .Logger | None = None
3740
3841 def configure_tracing (self , tracer : WorkflowTracer ) -> None :
@@ -90,8 +93,6 @@ def runner(
9093 if cache is None :
9194 cache = NoCache () # a no-op cache that will raise an error if it's used
9295
93- tracer = self ._tracer or WorkflowTracer ()
94-
9596 found_cluster = self .clusters ().find (to_cluster_slug (cluster or "" ))
9697
9798 try :
@@ -103,7 +104,7 @@ def runner(
103104
104105 runner_context_type = context or RunnerContext
105106 runner_context = runner_context_type (
106- tracer ._tracer , # noqa: SLF001
107+ self ._tracer ,
107108 datasets_client = DatasetsClient (** self ._auth ), # ty: ignore[invalid-argument-type]
108109 storage_locations = storage_locations ,
109110 )
@@ -112,7 +113,7 @@ def runner(
112113 TaskService (self ._channel ),
113114 found_cluster .slug ,
114115 cache ,
115- tracer ,
116+ self . _tracer ,
116117 self ._logger ,
117118 _LeaseRenewer (** self ._auth ),
118119 runner_context ,
0 commit comments