Skip to content

Commit fa534d2

Browse files
mhamzak008Zafer Genckaya
authored and
Zafer Genckaya
committed
Publishing sdk metrics whenever an exception is thrown while attempting to call the api
1 parent 17eb163 commit fa534d2

File tree

2 files changed

+48
-14
lines changed

2 files changed

+48
-14
lines changed

opsgenie_sdk/api_client.py

+24-7
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,30 @@ def __call_api(
194194
url = _host + resource_path
195195

196196
# perform request and return response
197-
response_data = self.retrying.call(fn=self.request, method=method, url=url,
198-
query_params=query_params,
199-
headers=header_params,
200-
post_params=post_params,
201-
body=body,
202-
_preload_content=_preload_content,
203-
_request_timeout=_request_timeout)
197+
try:
198+
response_data = self.retrying.call(fn=self.request, method=method, url=url,
199+
query_params=query_params,
200+
headers=header_params,
201+
post_params=post_params,
202+
body=body,
203+
_preload_content=_preload_content,
204+
_request_timeout=_request_timeout)
205+
except Exception as exception:
206+
self._sdk_request_details = {
207+
"query_params": query_params,
208+
"headers": header_params,
209+
"post_params": post_params,
210+
"body": body,
211+
"_preload_content": _preload_content,
212+
"_request_timeout": _request_timeout
213+
}
214+
self.sdk_metric_publisher.build_metric(transaction_id=config.metrics_transaction_id,
215+
duration=datetime.datetime.now() - self._request_start_time,
216+
resource_path=url, error_type=type(exception),
217+
error_message=str(exception),
218+
sdk_request_details=self._sdk_request_details,
219+
sdk_result_details="An Exception Was Thrown!")
220+
raise exception
204221

205222
self.last_response = response_data
206223

templates/api_client.mustache

+24-7
Original file line numberDiff line numberDiff line change
@@ -191,13 +191,30 @@ class ApiClient(object):
191191
url = _host + resource_path
192192

193193
# perform request and return response
194-
response_data = {{#asyncio}}await {{/asyncio}}{{#tornado}}yield {{/tornado}}self.retrying.call(fn=self.request, method=method, url=url,
195-
query_params=query_params,
196-
headers=header_params,
197-
post_params=post_params,
198-
body=body,
199-
_preload_content=_preload_content,
200-
_request_timeout=_request_timeout)
194+
try:
195+
response_data = {{#asyncio}}await {{/asyncio}}{{#tornado}}yield {{/tornado}}self.retrying.call(fn=self.request, method=method, url=url,
196+
query_params=query_params,
197+
headers=header_params,
198+
post_params=post_params,
199+
body=body,
200+
_preload_content=_preload_content,
201+
_request_timeout=_request_timeout)
202+
except Exception as exception:
203+
self._sdk_request_details = {
204+
"query_params": query_params,
205+
"headers": header_params,
206+
"post_params": post_params,
207+
"body": body,
208+
"_preload_content": _preload_content,
209+
"_request_timeout": _request_timeout
210+
}
211+
self.sdk_metric_publisher.build_metric(transaction_id=config.metrics_transaction_id,
212+
duration=datetime.datetime.now() - self._request_start_time,
213+
resource_path=url, error_type=type(exception),
214+
error_message=str(exception),
215+
sdk_request_details=self._sdk_request_details,
216+
sdk_result_details="An Exception Was Thrown!")
217+
raise exception
201218

202219
self.last_response = response_data
203220

0 commit comments

Comments
 (0)