Skip to content

Commit 9af1adc

Browse files
committed
Remove _global_session and replace with create_default_session and add session_id support
1 parent 5654cad commit 9af1adc

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

adafruit_requests.py

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -356,27 +356,20 @@ def iter_content(self, chunk_size: int = 1, decode_unicode: bool = False) -> byt
356356
self.close()
357357

358358

359-
_global_session = None # pylint: disable=invalid-name
360-
361-
362359
class Session:
363360
"""HTTP session that shares sockets and ssl context."""
364361

365362
def __init__(
366363
self,
367364
socket_pool: SocketpoolModuleType,
368365
ssl_context: Optional[SSLContextType] = None,
369-
set_global_session: bool = True,
366+
session_id: Optional[str] = None,
370367
) -> None:
371368
self._connection_manager = get_connection_manager(socket_pool)
372369
self._ssl_context = ssl_context
370+
self._session_id = session_id
373371
self._last_response = None
374372

375-
if set_global_session:
376-
# pylint: disable=global-statement
377-
global _global_session
378-
_global_session = self
379-
380373
@staticmethod
381374
def _check_headers(headers: Dict[str, str]):
382375
if not isinstance(headers, dict):
@@ -537,7 +530,12 @@ def request(
537530
while retry_count < 2:
538531
retry_count += 1
539532
socket = self._connection_manager.get_socket(
540-
host, port, proto, timeout=timeout, ssl_context=self._ssl_context
533+
host,
534+
port,
535+
proto,
536+
session_id=self._session_id,
537+
timeout=timeout,
538+
ssl_context=self._ssl_context,
541539
)
542540
ok = True
543541
try:
@@ -618,6 +616,18 @@ def delete(self, url: str, **kw) -> Response:
618616
return self.request("DELETE", url, **kw)
619617

620618

619+
_default_session = None # pylint: disable=invalid-name
620+
621+
622+
def create_default_session(
623+
socket_pool: SocketpoolModuleType,
624+
ssl_context: Optional[SSLContextType] = None,
625+
):
626+
"""Create a default session for using globally"""
627+
global _default_session # pylint: disable=global-statement
628+
_default_session = Session(socket_pool, ssl_context)
629+
630+
621631
def request(
622632
method: str,
623633
url: str,
@@ -629,7 +639,7 @@ def request(
629639
) -> None:
630640
"""Send HTTP request"""
631641
# pylint: disable=too-many-arguments
632-
_global_session.request(
642+
_default_session.request(
633643
method,
634644
url,
635645
data=data,
@@ -642,29 +652,29 @@ def request(
642652

643653
def head(url: str, **kw):
644654
"""Send HTTP HEAD request"""
645-
return _global_session.request("HEAD", url, **kw)
655+
return _default_session.request("HEAD", url, **kw)
646656

647657

648658
def get(url: str, **kw):
649659
"""Send HTTP GET request"""
650-
return _global_session.request("GET", url, **kw)
660+
return _default_session.request("GET", url, **kw)
651661

652662

653663
def post(url: str, **kw):
654664
"""Send HTTP POST request"""
655-
return _global_session.request("POST", url, **kw)
665+
return _default_session.request("POST", url, **kw)
656666

657667

658668
def put(url: str, **kw):
659669
"""Send HTTP PUT request"""
660-
return _global_session.request("PUT", url, **kw)
670+
return _default_session.request("PUT", url, **kw)
661671

662672

663673
def patch(url: str, **kw):
664674
"""Send HTTP PATCH request"""
665-
return _global_session.request("PATCH", url, **kw)
675+
return _default_session.request("PATCH", url, **kw)
666676

667677

668678
def delete(url: str, **kw):
669679
"""Send HTTP DELETE request"""
670-
return _global_session.request("DELETE", url, **kw)
680+
return _default_session.request("DELETE", url, **kw)

0 commit comments

Comments
 (0)