server: add sentry to server (#93)

Closes #91
This commit is contained in:
2023-08-02 11:28:18 +02:00
committed by GitHub
parent a3870efc40
commit 4d4292e1b5
4 changed files with 66 additions and 1 deletions

45
server/poetry.lock generated
View File

@@ -1835,6 +1835,49 @@ urllib3 = ">=1.21.1,<3"
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "sentry-sdk"
version = "1.29.2"
description = "Python client for Sentry (https://sentry.io)"
optional = false
python-versions = "*"
files = [
{file = "sentry-sdk-1.29.2.tar.gz", hash = "sha256:a99ee105384788c3f228726a88baf515fe7b5f1d2d0f215a03d194369f158df7"},
{file = "sentry_sdk-1.29.2-py2.py3-none-any.whl", hash = "sha256:3e17215d8006612e2df02b0e73115eb8376c37e3f586d8436fa41644e605074d"},
]
[package.dependencies]
certifi = "*"
fastapi = {version = ">=0.79.0", optional = true, markers = "extra == \"fastapi\""}
urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""}
[package.extras]
aiohttp = ["aiohttp (>=3.5)"]
arq = ["arq (>=0.23)"]
beam = ["apache-beam (>=2.12)"]
bottle = ["bottle (>=0.12.13)"]
celery = ["celery (>=3)"]
chalice = ["chalice (>=1.16.0)"]
django = ["django (>=1.8)"]
falcon = ["falcon (>=1.4)"]
fastapi = ["fastapi (>=0.79.0)"]
flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"]
grpcio = ["grpcio (>=1.21.1)"]
httpx = ["httpx (>=0.16.0)"]
huey = ["huey (>=2)"]
loguru = ["loguru (>=0.5)"]
opentelemetry = ["opentelemetry-distro (>=0.35b0)"]
pure-eval = ["asttokens", "executing", "pure-eval"]
pymongo = ["pymongo (>=3.1)"]
pyspark = ["pyspark (>=2.4.4)"]
quart = ["blinker (>=1.1)", "quart (>=0.16.1)"]
rq = ["rq (>=0.6)"]
sanic = ["sanic (>=0.8)"]
sqlalchemy = ["sqlalchemy (>=1.2)"]
starlette = ["starlette (>=0.19.1)"]
starlite = ["starlite (>=1.48)"]
tornado = ["tornado (>=5)"]
[[package]]
name = "sniffio"
version = "1.3.0"
@@ -2327,4 +2370,4 @@ multidict = ">=4.0"
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
content-hash = "d696a09d54edbfc0ab52bd4e7b1ba09f3930ac5d3156df511cc3094ddb7d6ac5"
content-hash = "f94162f1217c3767f792902a9a45fec81275ae3a98f2809662bf3a3d574984e2"

View File

@@ -20,6 +20,7 @@ pydantic-settings = "^2.0.2"
structlog = "^23.1.0"
uvicorn = {extras = ["standard"], version = "^0.23.1"}
fastapi = "^0.100.1"
sentry-sdk = {extras = ["fastapi"], version = "^1.29.2"}
[tool.poetry.group.dev.dependencies]

View File

@@ -2,8 +2,15 @@ from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from reflector.views.rtc_offer import router as rtc_offer_router
from reflector.events import subscribers_startup, subscribers_shutdown
from reflector.logger import logger
from reflector.settings import settings
from contextlib import asynccontextmanager
try:
import sentry_sdk
except ImportError:
sentry_sdk = None
# lifespan events
@asynccontextmanager
@@ -15,6 +22,17 @@ async def lifespan(app: FastAPI):
await func()
# use sentry if available
if settings.SENTRY_DSN:
if not sentry_sdk:
logger.error("Sentry is not installed, avoided")
else:
logger.info("Sentry enabled")
sentry_sdk.init(dsn=settings.SENTRY_DSN, traces_sample_rate=1.0)
else:
logger.info("Sentry disabled")
# build app
app = FastAPI(lifespan=lifespan)
app.add_middleware(

View File

@@ -44,5 +44,8 @@ class Settings(BaseSettings):
STORAGE_AWS_SECRET_KEY: str = ""
STORAGE_AWS_BUCKET: str = ""
# Sentry
SENTRY_DSN: str | None = None
settings = Settings()