|
39 | 39 | DEFAULT_HEADERS = {"Accept": "application/json",
|
40 | 40 | "Content-type": "application/json"}
|
41 | 41 |
|
| 42 | +session = None |
| 43 | + |
| 44 | + |
| 45 | +def get_session(): |
| 46 | + global session |
| 47 | + if not session: |
| 48 | + session = requests.Session() |
| 49 | + return session |
| 50 | + |
| 51 | + |
| 52 | +def close_session(): |
| 53 | + global session |
| 54 | + if session: |
| 55 | + session.close() |
| 56 | + |
42 | 57 |
|
43 | 58 | def getAuthHandler(keyName, keyValue):
|
44 | 59 | if not isinstance(keyName, bytes):
|
@@ -80,28 +95,33 @@ class perfHTTPrequestHelper(object):
|
80 | 95 | 2. waits until the server response, finally forwards a result to the QueryHandler
|
81 | 96 | """
|
82 | 97 |
|
83 |
| - def __init__(self, logger, reqdata=None, session=None): |
84 |
| - self.session = session or requests.Session() |
| 98 | + def __init__(self, logger, reqdata=None, caCert=False): |
| 99 | + self.session = get_session() |
| 100 | + self.caCert = caCert |
85 | 101 | self.requestData = reqdata
|
86 | 102 | self.logger = logger
|
87 | 103 |
|
88 | 104 | @cond_execution_time(enabled=analytics.inspect)
|
89 | 105 | def doRequest(self):
|
90 | 106 | if self.requestData and isinstance(self.requestData, requests.Request):
|
| 107 | + self.session.verify = self.caCert |
91 | 108 | _prepRequest = self.session.prepare_request(self.requestData)
|
92 | 109 | try:
|
93 | 110 | res = self.session.send(_prepRequest)
|
94 | 111 | return res
|
95 | 112 | except requests.exceptions.ConnectionError:
|
| 113 | + close_session() |
96 | 114 | res = requests.Response()
|
97 | 115 | res.status_code = 503
|
98 | 116 | res.reason = "Connection refused from server"
|
99 | 117 | return res
|
100 | 118 | except requests.exceptions.RequestException as e:
|
| 119 | + close_session() |
101 | 120 | self.logger.debug('doRequest __ RequestException. Request data: {}, Response data: {}'.format(e.request, e.response))
|
102 | 121 | res = requests.Response()
|
103 | 122 | res.status_code = 404
|
104 | 123 | res.reason = "The request could not be processed from server"
|
105 | 124 | return res
|
106 | 125 | else:
|
| 126 | + close_session() |
107 | 127 | raise TypeError('doRequest __ Error: request data wrong format')
|
0 commit comments