dt-extensions-sdk 1.2.2__py3-none-any.whl → 1.2.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dt-extensions-sdk
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Project-URL: Documentation, https://github.com/dynatrace-extensions/dt-extensions-python-sdk#readme
5
5
  Project-URL: Issues, https://github.com/dynatrace-extensions/dt-extensions-python-sdk/issues
6
6
  Project-URL: Source, https://github.com/dynatrace-extensions/dt-extensions-python-sdk
@@ -1,4 +1,4 @@
1
- dynatrace_extension/__about__.py,sha256=vKIcJH3U52zFvbhd5VoVv58vj26hHKE26IYhtDfDDUo,109
1
+ dynatrace_extension/__about__.py,sha256=TLyHW1TFN8BFLjdtrH0-fQP5cpool1Nmic9L4C1gsy0,109
2
2
  dynatrace_extension/__init__.py,sha256=BvQuknmA7ti3WJi3zEXZfY7aAxJrie37VNitWICsUvI,752
3
3
  dynatrace_extension/cli/__init__.py,sha256=HCboY_eJPoqjFmoPDsBL8Jk6aNvank8K7JpkVrgwzUM,123
4
4
  dynatrace_extension/cli/main.py,sha256=ZOqxZsaMJRZsqR3Og2a9h2PDlkyJE8tAny-p7Mb7dmA,17254
@@ -15,10 +15,10 @@ dynatrace_extension/cli/create/extension_template/extension_name/__init__.py.tem
15
15
  dynatrace_extension/cli/create/extension_template/extension_name/__main__.py.template,sha256=Mr7kfekNfEBUapJh_xbySZD8jPyYDspZx3KAfnhdCUk,1258
16
16
  dynatrace_extension/sdk/__init__.py,sha256=RsqQ1heGyCmSK3fhuEKAcxQIRCg4gEK0-eSkIehL5Nc,86
17
17
  dynatrace_extension/sdk/activation.py,sha256=goTbT1tD2kn8xfyXFdTy_cTZNcFPJpgbvQM8HOzKECA,1480
18
- dynatrace_extension/sdk/callback.py,sha256=oYtKbIoMChG383BZrDWJvkVvOCsee7rpLXzOaTKo9Xo,5871
18
+ dynatrace_extension/sdk/callback.py,sha256=FJSkaBF895NZquUtpSj1I2vel2Rx-y-2da8mKX_pk4I,6307
19
19
  dynatrace_extension/sdk/communication.py,sha256=gD4GOHOzWdRL_KrUWtC2s8-Jp8Csn5gjZl4mHO5Lk_4,17739
20
20
  dynatrace_extension/sdk/event.py,sha256=J261imbFKpxfuAQ6Nfu3RRcsIQKKivy6fme1nww2g-8,388
21
- dynatrace_extension/sdk/extension.py,sha256=fOXPjz4hMtpCg4lmzzozZ1jDxuriNkouLEGVbQzHYFY,41541
21
+ dynatrace_extension/sdk/extension.py,sha256=48MK9E4JhAxTFOabWDJ58uZqSmGNwTC62vL1RP_q_gM,41623
22
22
  dynatrace_extension/sdk/helper.py,sha256=ZNrO9ao2hE3KQ934vAYD74k0fCr6QTG-_bAvbk9-hi8,6562
23
23
  dynatrace_extension/sdk/metric.py,sha256=7VClzJCFJNDCxA-d69uTu1pdPtDZBTwq7fbafs_L6nQ,3690
24
24
  dynatrace_extension/sdk/runtime.py,sha256=jyYsM1x-gMnW68eWq8IoZZZBarHgIcr_nVeGDDgpRDk,2802
@@ -27,8 +27,8 @@ dynatrace_extension/sdk/vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
27
27
  dynatrace_extension/sdk/vendor/mureq/LICENSE,sha256=8AVcgZgiT_mvK1fOofXtRRr2f1dRXS_K21NuxQgP4VM,671
28
28
  dynatrace_extension/sdk/vendor/mureq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  dynatrace_extension/sdk/vendor/mureq/mureq.py,sha256=znF4mvzk5L03CLNozRz8UpK-fMijmSkObDFwlbhwLUg,14656
30
- dt_extensions_sdk-1.2.2.dist-info/METADATA,sha256=ez3XwZcPPgfJS9-qYWXfzV283ed2HVzAxbZ1aj1icT4,2793
31
- dt_extensions_sdk-1.2.2.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
32
- dt_extensions_sdk-1.2.2.dist-info/entry_points.txt,sha256=pweyOCgENGHjOlT6_kXYaBPOrE3p18K0UettqnNlnoE,55
33
- dt_extensions_sdk-1.2.2.dist-info/licenses/LICENSE.txt,sha256=3Zihv0lOVYHNfDkJC-tUAU6euP9r2NexsDW4w-zqgVk,1078
34
- dt_extensions_sdk-1.2.2.dist-info/RECORD,,
30
+ dt_extensions_sdk-1.2.3.dist-info/METADATA,sha256=Bb83R0u5D4P42VsTWCgkBw8NP1LXhVj0oCaQdQS_9RA,2793
31
+ dt_extensions_sdk-1.2.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
32
+ dt_extensions_sdk-1.2.3.dist-info/entry_points.txt,sha256=pweyOCgENGHjOlT6_kXYaBPOrE3p18K0UettqnNlnoE,55
33
+ dt_extensions_sdk-1.2.3.dist-info/licenses/LICENSE.txt,sha256=3Zihv0lOVYHNfDkJC-tUAU6euP9r2NexsDW4w-zqgVk,1078
34
+ dt_extensions_sdk-1.2.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.24.2
2
+ Generator: hatchling 1.25.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -2,4 +2,4 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
- __version__ = "1.2.2"
5
+ __version__ = "1.2.3"
@@ -45,6 +45,7 @@ class WrappedCallback:
45
45
  self.ok_count = 0 # counter per interval = 1 min by default
46
46
  self.timeouts_count = 0 # counter per interval = 1 min by default
47
47
  self.exception_count = 0 # counter per interval = 1 min by default
48
+ self.iterations = 0 # how many times we ran the callback iterator for this callback
48
49
 
49
50
  def get_current_time_with_cluster_diff(self):
50
51
  return datetime.now() + timedelta(milliseconds=self.cluster_time_diff)
@@ -56,7 +57,6 @@ class WrappedCallback:
56
57
  self.running = True
57
58
  self.executions_total += 1
58
59
  self.executions_per_interval += 1
59
- self.next_run = datetime.now() + self.interval
60
60
  start_time = timer()
61
61
  failed = False
62
62
  try:
@@ -133,3 +133,13 @@ class WrappedCallback:
133
133
  self.duration_interval_total = 0
134
134
  self.exception_count = 0
135
135
  self.executions_per_interval = 0
136
+
137
+ def get_next_execution_timestamp(self) -> float:
138
+ """
139
+ Get the timestamp for the next execution of the callback
140
+ This is done using execution total, the interval and the start timestamp
141
+ :return: datetime
142
+ """
143
+ return (
144
+ self.start_timestamp + timedelta(seconds=self.interval.total_seconds() * (self.iterations or 1))
145
+ ).timestamp()
@@ -789,7 +789,9 @@ class Extension:
789
789
 
790
790
  def _callback_iteration(self, callback: WrappedCallback):
791
791
  self._callbacks_executor.submit(self._run_callback, callback)
792
- self._scheduler.enter(callback.interval.total_seconds(), 1, self._callback_iteration, (callback,))
792
+ callback.iterations += 1
793
+ next_timestamp = callback.get_next_execution_timestamp()
794
+ self._scheduler.enterabs(next_timestamp, 1, self._callback_iteration, (callback,))
793
795
 
794
796
  def _start_extension_loop(self):
795
797
  api_logger.debug(f"Starting main loop for monitoring configuration: '{self.monitoring_config_name}'")