logos-sdk 0.0.25.dev1__tar.gz → 0.0.25.dev2__tar.gz

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.
Files changed (26) hide show
  1. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/PKG-INFO +1 -1
  2. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/GoogleAds.py +17 -2
  3. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk.egg-info/PKG-INFO +1 -1
  4. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/LICENSE +0 -0
  5. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/README.md +0 -0
  6. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/__init__.py +0 -0
  7. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/big_query/BigQuery.py +0 -0
  8. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/big_query/__init__.py +0 -0
  9. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/logging/LogosLogger.py +0 -0
  10. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/logging/__init__.py +0 -0
  11. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/CampaignManager.py +0 -0
  12. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/Collabim.py +0 -0
  13. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/DV360.py +0 -0
  14. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/Facebook.py +0 -0
  15. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/GoogleSheets.py +0 -0
  16. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/MarketMiner.py +0 -0
  17. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/MerchantCenter.py +0 -0
  18. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/MicrosoftAdvertising.py +0 -0
  19. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/Sklik.py +0 -0
  20. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk/services/__init__.py +0 -0
  21. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk.egg-info/SOURCES.txt +0 -0
  22. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk.egg-info/dependency_links.txt +0 -0
  23. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk.egg-info/requires.txt +0 -0
  24. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/logos_sdk.egg-info/top_level.txt +0 -0
  25. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/setup.cfg +0 -0
  26. {logos_sdk-0.0.25.dev1 → logos_sdk-0.0.25.dev2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logos-sdk
3
- Version: 0.0.25.dev1
3
+ Version: 0.0.25.dev2
4
4
  Summary: SDK for Logos platform
5
5
  Home-page: https://bitbucket.org/databy/logos-sdk-pip/src/master/
6
6
  Author: Databy.io
@@ -1,9 +1,12 @@
1
1
  from requests import request
2
+ from requests.exceptions import Timeout
2
3
  from typing import List, Union, Dict
3
4
  from logos_sdk.services import get_headers
4
5
  from http import HTTPStatus
5
6
  from dotenv import load_dotenv
6
7
  import os
8
+ import time
9
+ import random
7
10
 
8
11
 
9
12
  class GoogleAdsServiceException(Exception):
@@ -19,6 +22,18 @@ class GoogleAdsService:
19
22
  self._EXCLUDE_FOR_ACCOUNT = self._URL + "/exclude-for-account"
20
23
  self._EXCLUDE_FOR_AD_GROUP = self._URL + "/exclude-for-ad-group"
21
24
 
25
+ @staticmethod
26
+ def fetch_with_retry_on_timeout(url, json, headers):
27
+ for attempt in range(5):
28
+ try:
29
+ return request("post", url, json=json, headers=headers, timeout=25)
30
+ except Timeout:
31
+ delay = 2 * (2 ** attempt) + random.randint(0, 9)
32
+ print(f"there was a timeout when contacting the service, going to sleep for {delay} seconds")
33
+ time.sleep(delay)
34
+
35
+ raise Exception("The service is not able to reply within 30 seconds.")
36
+
22
37
  def search_stream(
23
38
  self,
24
39
  query: str,
@@ -38,7 +53,7 @@ class GoogleAdsService:
38
53
  }
39
54
 
40
55
  header = get_headers(self._SEARCH_STREAM)
41
- response = request("post", url=self._SEARCH_STREAM, json=body, headers=header)
56
+ response = self.fetch_with_retry_on_timeout(url=self._SEARCH_STREAM, json=body, headers=header)
42
57
 
43
58
  if response.status_code == HTTPStatus.OK:
44
59
  service_response = response.json()
@@ -69,7 +84,7 @@ class GoogleAdsService:
69
84
  }
70
85
 
71
86
  header = get_headers(self._SEARCH)
72
- response = request("post", url=self._SEARCH, json=body, headers=header)
87
+ response = self.fetch_with_retry_on_timeout(url=self._SEARCH, json=body, headers=header)
73
88
 
74
89
  if response.status_code != HTTPStatus.OK:
75
90
  raise GoogleAdsServiceException(response.content)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logos-sdk
3
- Version: 0.0.25.dev1
3
+ Version: 0.0.25.dev2
4
4
  Summary: SDK for Logos platform
5
5
  Home-page: https://bitbucket.org/databy/logos-sdk-pip/src/master/
6
6
  Author: Databy.io
File without changes