@@ -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-
362359class 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+
621631def 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
643653def 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
648658def 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
653663def 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
658668def 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
663673def 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
668678def 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