datamarket 0.7.107__tar.gz → 0.7.108__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.
Potentially problematic release.
This version of datamarket might be problematic. Click here for more details.
- {datamarket-0.7.107 → datamarket-0.7.108}/PKG-INFO +1 -1
- {datamarket-0.7.107 → datamarket-0.7.108}/pyproject.toml +1 -1
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/proxy.py +12 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/LICENSE +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/README.md +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/exceptions/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/exceptions/main.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/alchemy.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/aws.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/azure.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/drive.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/ftp.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/nominatim.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/peerdb.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/interfaces/tinybird.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/params/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/params/nominatim.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/airflow.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/alchemy.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/main.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/nominatim.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/playwright/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/playwright/async_api.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/playwright/sync_api.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/selenium.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/soda.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/strings/__init__.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/strings/normalization.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/strings/obfuscation.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/strings/standardization.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/typer.py +0 -0
- {datamarket-0.7.107 → datamarket-0.7.108}/src/datamarket/utils/types.py +0 -0
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
########################################################################################################################
|
|
2
|
+
# IMPORTS
|
|
3
|
+
|
|
1
4
|
import logging
|
|
2
5
|
import random
|
|
3
6
|
import time
|
|
@@ -10,12 +13,18 @@ from stem.control import Controller
|
|
|
10
13
|
|
|
11
14
|
from datamarket.exceptions import EnsureNewIPTimeoutError, NoWorkingProxiesError
|
|
12
15
|
|
|
16
|
+
########################################################################################################################
|
|
17
|
+
# SETUP
|
|
18
|
+
|
|
13
19
|
logger = logging.getLogger(__name__)
|
|
14
20
|
logging.getLogger("stem").setLevel(logging.WARNING)
|
|
15
21
|
|
|
16
22
|
PROXY_ROTATION_INTERVAL = timedelta(minutes=10)
|
|
17
23
|
PROXY_ROTATION_TIMEOUT_SECONDS = int(PROXY_ROTATION_INTERVAL.total_seconds())
|
|
18
24
|
|
|
25
|
+
########################################################################################################################
|
|
26
|
+
# CLASSES
|
|
27
|
+
|
|
19
28
|
|
|
20
29
|
class ProxyInterface:
|
|
21
30
|
"""
|
|
@@ -249,7 +258,9 @@ class ProxyInterface:
|
|
|
249
258
|
# Handle both timedelta and numeric seconds for backward compatibility
|
|
250
259
|
if proxy_rotation_interval:
|
|
251
260
|
retrying = tenacity.Retrying(
|
|
261
|
+
wait=tenacity.wait_fixed(cooldown_seconds),
|
|
252
262
|
stop=tenacity.stop_after_delay(proxy_rotation_interval),
|
|
263
|
+
before_sleep=tenacity.before_sleep_log(logger, logging.INFO),
|
|
253
264
|
reraise=True,
|
|
254
265
|
)
|
|
255
266
|
entry = retrying(_find_working_entry)
|
|
@@ -321,6 +332,7 @@ class ProxyInterface:
|
|
|
321
332
|
raise NoWorkingProxiesError("No working proxies available")
|
|
322
333
|
|
|
323
334
|
def _wait_for_new_ip(self, entry, baseline, timeout, interval, check_timeout):
|
|
335
|
+
logger.info("Refreshing proxy IP...")
|
|
324
336
|
start = time.time()
|
|
325
337
|
while time.time() - start < timeout:
|
|
326
338
|
host, port, user, pwd = entry
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|