forked from Flagsmith/flagsmith
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtelemetry.py
31 lines (25 loc) · 977 Bytes
/
telemetry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import json
import logging
import requests
from telemetry.models import TelemetryData
from telemetry.serializers import TelemetrySerializer
logger = logging.getLogger(__name__)
class SelfHostedTelemetryWrapper:
TELEMETRY_API_URI = "https://api.flagsmith.com/api/v1/analytics/telemetry/"
def send_heartbeat(self) -> None:
telemetry_data = TelemetryData.generate_telemetry_data()
serializer = TelemetrySerializer(instance=telemetry_data)
self._send(serializer.data)
def _send(self, data: dict) -> None:
try:
response = requests.post(
self.TELEMETRY_API_URI,
json=data,
timeout=2,
)
logger.debug(
"Sent telemetry heartbeat to Flagsmith. Response code was %s"
% response.status_code
)
except requests.ConnectionError:
logger.debug("Unable to send telemetry heartbeat to Flagsmith.")