Skip to content

Commit f6fa7d4

Browse files
committed
drop session export delay to one second and expose it as a public configuration parameter.
1 parent df3f269 commit f6fa7d4

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

agentops/config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class ConfigDict(TypedDict):
2020
api_key: Optional[str]
2121
endpoint: Optional[str]
2222
max_wait_time: Optional[int]
23+
export_flush_interval: Optional[int]
2324
max_queue_size: Optional[int]
2425
default_tags: Optional[List[str]]
2526
instrument_llm_calls: Optional[bool]
@@ -48,6 +49,11 @@ class Config:
4849
default_factory=lambda: get_env_int("AGENTOPS_MAX_WAIT_TIME", 5000),
4950
metadata={"description": "Maximum time in milliseconds to wait for API responses"},
5051
)
52+
53+
export_flush_interval: int = field(
54+
default_factory=lambda: get_env_int("AGENTOPS_EXPORT_FLUSH_INTERVAL", 1000),
55+
metadata={"description": "Time interval in milliseconds between automatic exports of telemetry data"},
56+
)
5157

5258
max_queue_size: int = field(
5359
default_factory=lambda: get_env_int("AGENTOPS_MAX_QUEUE_SIZE", 512),
@@ -119,6 +125,7 @@ def configure(
119125
api_key: Optional[str] = None,
120126
endpoint: Optional[str] = None,
121127
max_wait_time: Optional[int] = None,
128+
export_flush_interval: Optional[int] = None,
122129
max_queue_size: Optional[int] = None,
123130
default_tags: Optional[List[str]] = None,
124131
instrument_llm_calls: Optional[bool] = None,
@@ -147,6 +154,9 @@ def configure(
147154

148155
if max_wait_time is not None:
149156
self.max_wait_time = max_wait_time
157+
158+
if export_flush_interval is not None:
159+
self.export_flush_interval = export_flush_interval
150160

151161
if max_queue_size is not None:
152162
self.max_queue_size = max_queue_size
@@ -202,6 +212,7 @@ def dict(self):
202212
"api_key": self.api_key,
203213
"endpoint": self.endpoint,
204214
"max_wait_time": self.max_wait_time,
215+
"export_flush_interval": self.export_flush_interval,
205216
"max_queue_size": self.max_queue_size,
206217
"default_tags": self.default_tags,
207218
"instrument_llm_calls": self.instrument_llm_calls,

agentops/sdk/core.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def setup_telemetry(
3131
metrics_endpoint: str = "https://otlp.agentops.ai/v1/metrics",
3232
max_queue_size: int = 512,
3333
max_wait_time: int = 5000,
34+
export_flush_interval: int = 1000,
3435
jwt: Optional[str] = None,
3536
) -> tuple[TracerProvider, MeterProvider]:
3637
"""
@@ -43,6 +44,7 @@ def setup_telemetry(
4344
metrics_endpoint: Endpoint for the metrics exporter
4445
max_queue_size: Maximum number of spans to queue before forcing a flush
4546
max_wait_time: Maximum time in milliseconds to wait before flushing
47+
export_flush_interval: Time interval in milliseconds between automatic exports of telemetry data
4648
jwt: JWT token for authentication
4749
4850
Returns:
@@ -73,7 +75,7 @@ def setup_telemetry(
7375
processor = BatchSpanProcessor(
7476
exporter,
7577
max_export_batch_size=max_queue_size,
76-
schedule_delay_millis=max_wait_time,
78+
schedule_delay_millis=export_flush_interval,
7779
)
7880
provider.add_span_processor(processor)
7981
provider.add_span_processor(InternalSpanProcessor()) # Catches spans for AgentOps on-terminal printing
@@ -151,6 +153,7 @@ def initialize(self, jwt: Optional[str] = None, **kwargs) -> None:
151153
kwargs.setdefault("metrics_endpoint", "https://otlp.agentops.ai/v1/metrics")
152154
kwargs.setdefault("max_queue_size", 512)
153155
kwargs.setdefault("max_wait_time", 5000)
156+
kwargs.setdefault("export_flush_interval", 1000)
154157

155158
# Create a TracingConfig from kwargs with proper defaults
156159
config: TracingConfig = {
@@ -159,6 +162,7 @@ def initialize(self, jwt: Optional[str] = None, **kwargs) -> None:
159162
"metrics_endpoint": kwargs["metrics_endpoint"],
160163
"max_queue_size": kwargs["max_queue_size"],
161164
"max_wait_time": kwargs["max_wait_time"],
165+
"export_flush_interval": kwargs["export_flush_interval"],
162166
"api_key": kwargs.get("api_key"),
163167
"project_id": kwargs.get("project_id"),
164168
}
@@ -173,6 +177,7 @@ def initialize(self, jwt: Optional[str] = None, **kwargs) -> None:
173177
metrics_endpoint=config["metrics_endpoint"] or "",
174178
max_queue_size=config["max_queue_size"],
175179
max_wait_time=config["max_wait_time"],
180+
export_flush_interval=config["export_flush_interval"],
176181
jwt=jwt,
177182
)
178183

@@ -250,6 +255,7 @@ def initialize_from_config(cls, config, **kwargs):
250255
"exporter_endpoint": getattr(config, "exporter_endpoint", None),
251256
"max_queue_size": getattr(config, "max_queue_size", 512),
252257
"max_wait_time": getattr(config, "max_wait_time", 5000),
258+
"export_flush_interval": getattr(config, "export_flush_interval", 1000),
253259
"api_key": getattr(config, "api_key", None),
254260
"project_id": getattr(config, "project_id", None),
255261
"endpoint": getattr(config, "endpoint", None),

agentops/sdk/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ class TracingConfig(TypedDict, total=False):
1818
project_id: Optional[str] # Project ID to include in resource attributes
1919
max_queue_size: int # Required with a default value
2020
max_wait_time: int # Required with a default value
21+
export_flush_interval: int # Time interval between automatic exports

0 commit comments

Comments
 (0)