Skip to content

Commit d2bf8c5

Browse files
authored
Merge pull request #72 from guardrails-ai/anonymous-telem
trace on server start
2 parents a25f97b + d31bdcc commit d2bf8c5

File tree

5 files changed

+40
-2
lines changed

5 files changed

+40
-2
lines changed

guardrails_api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.0.1"
1+
__version__ = "0.0.2"

guardrails_api/app.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
from opentelemetry.instrumentation.flask import FlaskInstrumentor
1010
from guardrails_api.clients.postgres_client import postgres_is_enabled
1111
from guardrails_api.otel import otel_is_disabled, initialize
12+
from guardrails_api.utils.trace_server_start_if_enabled import trace_server_start_if_enabled
1213
from guardrails_api.clients.cache_client import CacheClient
1314
from rich.console import Console
1415
from rich.rule import Rule
1516

17+
1618
# TODO: Move this to a separate file
1719
class OverrideJsonProvider(DefaultJSONProvider):
1820
def default(self, o):
@@ -50,6 +52,7 @@ def register_config(config: Optional[str] = None):
5052
def create_app(
5153
env: Optional[str] = None, config: Optional[str] = None, port: Optional[int] = None
5254
):
55+
trace_server_start_if_enabled()
5356
# used to print user-facing messages during server startup
5457
console = Console()
5558

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import requests
2+
3+
4+
def has_internet_connection() -> bool:
5+
try:
6+
res = requests.get("https://www.guardrailsai.com/")
7+
res.raise_for_status()
8+
return True
9+
except requests.ConnectionError:
10+
return False
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import platform
2+
from guardrails.classes.credentials import Credentials
3+
from guardrails.version import GUARDRAILS_VERSION
4+
from guardrails_api.utils.has_internet_connection import has_internet_connection
5+
6+
7+
def trace_server_start_if_enabled():
8+
config = Credentials.from_rc_file()
9+
if config.enable_metrics is True and has_internet_connection():
10+
from guardrails.utils.hub_telemetry_utils import HubTelemetry
11+
HubTelemetry().create_new_span(
12+
"guardrails-api/start",
13+
[
14+
("guardrails-version", GUARDRAILS_VERSION),
15+
("python-version", platform.python_version()),
16+
("system", platform.system()),
17+
("platform", platform.platform()),
18+
("arch", platform.architecture()[0]),
19+
("machine", platform.machine()),
20+
("processor", platform.processor()),
21+
],
22+
True,
23+
False,
24+
)

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ readme = "README.md"
1010
keywords = ["Guardrails", "Guardrails AI", "Guardrails API", "Guardrails API"]
1111
requires-python = ">= 3.8.1"
1212
dependencies = [
13-
"guardrails-ai>=0.5.0a11",
13+
"guardrails-ai>=0.5.6",
1414
"flask>=3.0.3,<4",
1515
"Flask-SQLAlchemy>=3.1.1,<4",
1616
"Flask-Caching>=2.3.0,<3",
@@ -27,6 +27,7 @@ dependencies = [
2727
"opentelemetry-exporter-otlp-proto-grpc>=1.0.0,<2",
2828
"opentelemetry-exporter-otlp-proto-http>=1.0.0,<2",
2929
"opentelemetry-instrumentation-flask>=0.12b0,<1",
30+
"requests>=2.32.3"
3031
]
3132

3233
[tool.setuptools.dynamic]

0 commit comments

Comments
 (0)