omnata-plugin-runtime 0.4.5__py3-none-any.whl → 0.4.6a101__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.
@@ -8,7 +8,7 @@ import re
8
8
  import threading
9
9
  from email.utils import parsedate_to_datetime
10
10
  from logging import getLogger
11
- from typing import List, Literal, Optional, Dict, Tuple
11
+ from typing import Any, List, Literal, Optional, Dict, Tuple
12
12
  import requests
13
13
  from pydantic import Field, root_validator
14
14
  from pydantic.json import pydantic_encoder
@@ -349,6 +349,32 @@ class RetryLaterException(Exception):
349
349
  self.message = message
350
350
  super().__init__(self.message)
351
351
 
352
+ class RetryWithLogging(Retry):
353
+ """
354
+ Adding extra logs before making a retry request
355
+ """
356
+ def __call__(self, *args: Any, thread_cancellation_token:threading.Event, **kwargs: Any) -> Any:
357
+ self.thread_cancellation_token = thread_cancellation_token
358
+ return super().__call__(*args, **kwargs)
359
+
360
+ def sleep_for_retry(self, response=None):
361
+ retry_after = self.get_retry_after(response)
362
+ if retry_after:
363
+ logger.info(f"Retrying after {retry_after} seconds due to Retry-After header")
364
+ if self.thread_cancellation_token.wait(retry_after):
365
+ raise InterruptedWhileWaitingException(message="The sync was interrupted while waiting for rate limiting to expire")
366
+ return True
367
+ return False
368
+
369
+ def _sleep_backoff(self):
370
+ backoff = self.get_backoff_time()
371
+ if backoff <= 0:
372
+ return
373
+ logger.info(f"Retrying after {backoff} seconds due to backoff time")
374
+ if self.thread_cancellation_token.wait(backoff):
375
+ raise InterruptedWhileWaitingException(message="The sync was interrupted while waiting for rate limiting to expire")
376
+
377
+
352
378
  class RateLimitedSession(requests.Session):
353
379
  """
354
380
  Creates a requests session that will automatically handle rate limiting.
@@ -366,7 +392,7 @@ class RateLimitedSession(requests.Session):
366
392
  self.thread_cancellation_token = thread_cancellation_token
367
393
  self.statuses_to_include = statuses_to_include
368
394
 
369
- retry_strategy = Retry(
395
+ retry_strategy = RetryWithLogging(
370
396
  total=max_retries,
371
397
  backoff_factor=backoff_factor,
372
398
  status_forcelist=statuses_to_include,
@@ -398,7 +424,7 @@ class RateLimitedSession(requests.Session):
398
424
  def request(self, method, url, **kwargs):
399
425
  while True:
400
426
  response = super().request(method, url, **kwargs)
401
-
427
+ # TODO: this is probably all redundant as the Retry object should handle this at a lower level (urllib3)
402
428
  if response.status_code in self.statuses_to_include:
403
429
  if 'Retry-After' in response.headers:
404
430
  retry_after = response.headers['Retry-After']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omnata-plugin-runtime
3
- Version: 0.4.5
3
+ Version: 0.4.6a101
4
4
  Summary: Classes and common runtime components for building and running Omnata Plugins
5
5
  Author: James Weakley
6
6
  Author-email: james.weakley@omnata.com
@@ -5,8 +5,8 @@ omnata_plugin_runtime/forms.py,sha256=pw_aKVsXSz47EP8PFBI3VDwdSN5IjvZxp8JTjO1V13
5
5
  omnata_plugin_runtime/logging.py,sha256=bn7eKoNWvtuyTk7RTwBS9UARMtqkiICtgMtzq3KA2V0,3272
6
6
  omnata_plugin_runtime/omnata_plugin.py,sha256=UJZNTcG6s5APZ7EIOYc5N4bFiyFEq3ekbSP6EK7tCBY,108065
7
7
  omnata_plugin_runtime/plugin_entrypoints.py,sha256=JAGEdVcy9QEXv7TO5zt7co64LTP8nqGusOc0sJG9GtU,29149
8
- omnata_plugin_runtime/rate_limiting.py,sha256=29Hjsr0i1rE8jERVdIFGINfQfp_kI3PDft-IM_ZxvCA,21509
9
- omnata_plugin_runtime-0.4.5.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
10
- omnata_plugin_runtime-0.4.5.dist-info/METADATA,sha256=0d4xQ6hbq-twZnIkK7UyU_lp1h6lCwFUqldIAyVZDHI,1638
11
- omnata_plugin_runtime-0.4.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
12
- omnata_plugin_runtime-0.4.5.dist-info/RECORD,,
8
+ omnata_plugin_runtime/rate_limiting.py,sha256=9Cv0sGOFnQaF-SQJaqJIWGAzkTcBGaJ1USZU5khhQIQ,22798
9
+ omnata_plugin_runtime-0.4.6a101.dist-info/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
10
+ omnata_plugin_runtime-0.4.6a101.dist-info/METADATA,sha256=zUn9jISlyAuv1aU8oCAKgG1bTUrWgyYIJ-SEg9fOA_M,1642
11
+ omnata_plugin_runtime-0.4.6a101.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
12
+ omnata_plugin_runtime-0.4.6a101.dist-info/RECORD,,