-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtesting-request-adapters.py
67 lines (52 loc) · 1.43 KB
/
testing-request-adapters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import logging
from scrapeops_python_requests.scrapeops_requests import ScrapeOpsRequests
## Add logging
log = logging.getLogger()
logging.basicConfig()
## Install ScrapeOps
scrapeops_logger = ScrapeOpsRequests(
scrapeops_api_key= 'YOUR-API-KEY-HERE',
spider_name='ScrapeOps',
job_name='Test',
)
############ HTTP Adapter/Retrys TESTING ##########
import time
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter
requests = scrapeops_logger.RequestsWrapper()
def requests_retry_session(
retries=3,
backoff_factor=0.3,
status_forcelist=(500, 502, 504),
session=None,
):
session = session or requests.Session()
retry = Retry(
total=retries,
read=retries,
connect=retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
return session
t0 = time.time()
try:
response = requests_retry_session().get(
'http://httpbin.org/status/500',
)
## Log item with ScrapeOps
item = {'test': 'hello'}
scrapeops_logger.item_scraped(
response=response,
item=item
)
except Exception as x:
print('It failed :(', x.__class__.__name__)
else:
print('It eventually worked', response.status_code)
finally:
t1 = time.time()
print('Took', t1 - t0, 'seconds')