4
4
5
5
import json
6
6
import requests
7
+ from requests .adapters import HTTPAdapter
8
+ from requests .packages .urllib3 .util .retry import Retry
7
9
8
10
import core
9
11
@@ -22,6 +24,12 @@ class PatchworkPostException(Exception):
22
24
23
25
class Patchwork (object ):
24
26
def __init__ (self , config ):
27
+ self ._session = requests .Session ()
28
+ retry = Retry (connect = 10 , backoff_factor = 1 )
29
+ adapter = HTTPAdapter (max_retries = retry )
30
+ self ._session .mount ('http://' , adapter )
31
+ self ._session .mount ('https://' , adapter )
32
+
25
33
self .server = config .get ('patchwork' , 'server' )
26
34
ssl = config .getboolean ('patchwork' , 'use_ssl' , fallback = True )
27
35
self ._proto = "https://" if ssl else "http://"
@@ -41,7 +49,7 @@ def __init__(self, config):
41
49
def _request (self , url ):
42
50
try :
43
51
core .log_open_sec (f"Patchwork { self .server } request: { url } " )
44
- ret = requests .get (url )
52
+ ret = self . _session .get (url )
45
53
core .log ("Response" , ret )
46
54
try :
47
55
core .log ("Response data" , ret .json ())
@@ -96,7 +104,7 @@ def _post(self, req, headers, data, api='1.1'):
96
104
url = f'{ self ._proto } { self .server } /api/{ api } /{ req } '
97
105
try :
98
106
core .log_open_sec (f"Patchwork { self .server } post: { url } " )
99
- ret = requests .post (url , headers = headers , data = data )
107
+ ret = self . _session .post (url , headers = headers , data = data )
100
108
core .log ("Headers" , headers )
101
109
core .log ("Data" , data )
102
110
core .log ("Response" , ret )
0 commit comments