in aws_advanced_python_wrapper/fastest_response_strategy_plugin.py [0:0]
def run(self):
context: TelemetryContext = self._telemetry_factory.open_telemetry_context(
"host response time thread", TelemetryTraceLevel.TOP_LEVEL)
context.set_attribute("url", self._host_info.url)
try:
while not self.is_stopped:
self._open_connection()
if self._monitoring_conn is not None:
response_time_sum = 0
count = 0
for i in range(self._NUM_OF_MEASURES):
if self.is_stopped:
break
start_time = self._get_current_time()
if self._plugin_service.driver_dialect.ping(self._monitoring_conn):
calculated_response_time = self._get_current_time() - start_time
response_time_sum = response_time_sum + calculated_response_time
count = count + 1
if count > 0:
self.response_time = response_time_sum / count
else:
self.response_time = MAX_VALUE
logger.debug("HostResponseTimeMonitor.ResponseTime", self._host_info.host, self._response_time)
sleep(self._interval_ms / 1000)
except InterruptedError:
# exit thread
logger.debug("HostResponseTimeMonitor.InterruptedExceptionDuringMonitoring", self._host_info.host)
except Exception as e:
# this should not be reached; log and exit thread
logger.debug("HostResponseTimeMonitor.ExceptionDuringMonitoringStop",
self._host_info.host,
e) # print full trace stack of the exception.
finally:
self._is_stopped.set()
if self._monitoring_conn is not None:
try:
self._monitoring_conn.close()
except Exception:
# Do nothing
pass
if context is not None:
context.close_context()