@@ -85,6 +85,14 @@ def _build_session(socket_options: Optional[SocketOptions] = None) -> requests.S
8585
8686
8787_session = _build_session ()
88+ _socket_options : Optional [SocketOptions ] = None
89+ _pooling_enabled = True
90+
91+
92+ def _get_session () -> requests .Session :
93+ if _pooling_enabled :
94+ return _session
95+ return _build_session (_socket_options )
8896
8997
9098def set_socket_options (socket_options : Optional [SocketOptions ]) -> None :
@@ -95,7 +103,8 @@ def set_socket_options(socket_options: Optional[SocketOptions]) -> None:
95103 from posthog import set_socket_options
96104 set_socket_options([(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)])
97105 """
98- global _session
106+ global _session , _socket_options
107+ _socket_options = socket_options
99108 _session = _build_session (socket_options )
100109
101110
@@ -104,6 +113,12 @@ def enable_keep_alive() -> None:
104113 set_socket_options (KEEP_ALIVE_SOCKET_OPTIONS )
105114
106115
116+ def disable_connection_reuse () -> None :
117+ """Disable connection reuse, creating a fresh connection for each request."""
118+ global _pooling_enabled
119+ _pooling_enabled = False
120+
121+
107122US_INGESTION_ENDPOINT = "https://us.i.posthog.com"
108123EU_INGESTION_ENDPOINT = "https://eu.i.posthog.com"
109124DEFAULT_HOST = US_INGESTION_ENDPOINT
@@ -148,7 +163,7 @@ def post(
148163 gz .write (data .encode ("utf-8" ))
149164 data = buf .getvalue ()
150165
151- res = _session .post (url , data = data , headers = headers , timeout = timeout )
166+ res = _get_session () .post (url , data = data , headers = headers , timeout = timeout )
152167
153168 if res .status_code == 200 :
154169 log .debug ("data uploaded successfully" )
@@ -263,7 +278,7 @@ def get(
263278 if etag :
264279 headers ["If-None-Match" ] = etag
265280
266- res = _session .get (full_url , headers = headers , timeout = timeout )
281+ res = _get_session () .get (full_url , headers = headers , timeout = timeout )
267282
268283 masked_url = _mask_tokens_in_url (full_url )
269284
0 commit comments