import uuid | |
import sentry_sdk | |
from typing import TYPE_CHECKING | |
if TYPE_CHECKING: | |
from typing import Optional | |
from sentry_sdk._types import Event, MonitorConfig | |
def _create_check_in_event( | |
monitor_slug=None, # type: Optional[str] | |
check_in_id=None, # type: Optional[str] | |
status=None, # type: Optional[str] | |
duration_s=None, # type: Optional[float] | |
monitor_config=None, # type: Optional[MonitorConfig] | |
): | |
# type: (...) -> Event | |
options = sentry_sdk.get_client().options | |
check_in_id = check_in_id or uuid.uuid4().hex # type: str | |
check_in = { | |
"type": "check_in", | |
"monitor_slug": monitor_slug, | |
"check_in_id": check_in_id, | |
"status": status, | |
"duration": duration_s, | |
"environment": options.get("environment", None), | |
"release": options.get("release", None), | |
} # type: Event | |
if monitor_config: | |
check_in["monitor_config"] = monitor_config | |
return check_in | |
def capture_checkin( | |
monitor_slug=None, # type: Optional[str] | |
check_in_id=None, # type: Optional[str] | |
status=None, # type: Optional[str] | |
duration=None, # type: Optional[float] | |
monitor_config=None, # type: Optional[MonitorConfig] | |
): | |
# type: (...) -> str | |
check_in_event = _create_check_in_event( | |
monitor_slug=monitor_slug, | |
check_in_id=check_in_id, | |
status=status, | |
duration_s=duration, | |
monitor_config=monitor_config, | |
) | |
sentry_sdk.capture_event(check_in_event) | |
return check_in_event["check_in_id"] | |