Add APM
This commit is contained in:
		
							
								
								
									
										16
									
								
								app/utils/apm.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/utils/apm.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| import sentry_sdk | ||||
| from sentry_sdk.integrations.stdlib import StdlibIntegration | ||||
|  | ||||
| from app.utils.config import config | ||||
|  | ||||
|  | ||||
| if config.sentry_enabled: | ||||
|     apm = sentry_sdk.init( | ||||
|         dsn=config.sentry_dsn, | ||||
|         enable_tracing=True, | ||||
|         environment=config.environment, | ||||
|         integrations=[StdlibIntegration()], | ||||
|         spotlight=True | ||||
|     ) | ||||
| else: | ||||
|     apm = None | ||||
| @@ -5,12 +5,29 @@ import os | ||||
|  | ||||
| class Config: | ||||
|     def __init__(self) -> None: | ||||
|         self.__environment: str = os.environ.get("APP_LIFECYCLE", "DEV").upper() | ||||
|         self.__bot_name: str = os.environ["BOT_NAME"] | ||||
|         self.__webex_token: str = os.environ["WEBEX_API_KEY"] | ||||
|         self.__admin_first_name: str = os.environ["ADMIN_FIRST_NAME"] | ||||
|         self.__admin_emails: list = os.environ["ADMIN_EMAIL"].split(",") | ||||
|         self.__n8n_webhook_url: str = os.environ["N8N_WEBHOOK_URL"] | ||||
|         self.__sentry_dsn: str = os.environ.get("SENTRY_DSN", "") | ||||
|         self.__sentry_enabled: bool = True if (os.environ.get("SENTRY_ENABLED").upper() == "TRUE" and self.__sentry_dsn != "") else False | ||||
|  | ||||
|     @property | ||||
|     def environment(self) -> str: | ||||
|         return self.__environment | ||||
|      | ||||
|     @property | ||||
|     def sentry_enabled(self) -> bool: | ||||
|         return self.__sentry_enabled | ||||
|      | ||||
|     @property | ||||
|     def sentry_dsn(self) -> str: | ||||
|         if not self.__sentry_enabled: | ||||
|             return "" | ||||
|         return self.__sentry_dsn | ||||
|      | ||||
|     @property | ||||
|     def bot_name(self) -> str: | ||||
|         return self.__bot_name | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import requests | ||||
| import sentry_sdk | ||||
|  | ||||
| from app.utils.config import config | ||||
|  | ||||
| @@ -16,22 +17,26 @@ def __n8n_post(data: dict) -> bool: | ||||
|  | ||||
|  | ||||
| def submit_task(summary, description, completion_date, requestor) -> bool: | ||||
|     data: dict = { | ||||
|         "requestor": requestor, | ||||
|         "title": summary, | ||||
|         "description": description, | ||||
|         "completiondate": completion_date, | ||||
|     } | ||||
|     return __n8n_post(data=data) | ||||
|     with sentry_sdk.start_transaction(name="submit_task"): | ||||
|         data: dict = { | ||||
|             "requestor": requestor, | ||||
|             "title": summary, | ||||
|             "description": description, | ||||
|             "completiondate": completion_date, | ||||
|         } | ||||
|         _data = __n8n_post(data=data) | ||||
|     return _data | ||||
|  | ||||
|  | ||||
| def get_tasks(requestor) -> bool: | ||||
|     headers: dict = {"Content-Type": "application/json"} | ||||
|     resp: requests.Response = requests.get( | ||||
|         url=config.n8n_webhook_url, | ||||
|         headers=headers, | ||||
|         timeout=10, | ||||
|         verify=False, | ||||
|         params={"requestor": requestor}, | ||||
|     ) | ||||
|     return bool(resp.status_code == 200) | ||||
|     with sentry_sdk.start_transaction(name="get_tasks"): | ||||
|         headers: dict = {"Content-Type": "application/json"} | ||||
|         resp: requests.Response = requests.get( | ||||
|             url=config.n8n_webhook_url, | ||||
|             headers=headers, | ||||
|             timeout=10, | ||||
|             verify=False, | ||||
|             params={"requestor": requestor}, | ||||
|         ) | ||||
|         _data = bool(resp.status_code == 200) | ||||
|     return _data | ||||
|   | ||||
		Reference in New Issue
	
	Block a user