Skip to content

Commit 18de3ac

Browse files
authored
TST: Avoid hanging behavior in test_user_agent.py (pandas-dev#44797)
1 parent 2d05eb5 commit 18de3ac

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

pandas/tests/io/test_user_agent.py

+10-15
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,10 @@ def gzip_bytes(self, response_bytes):
3939
"""
4040
some web servers will send back gzipped files to save bandwidth
4141
"""
42-
bio = BytesIO()
43-
zipper = gzip.GzipFile(fileobj=bio, mode="w")
44-
zipper.write(response_bytes)
45-
zipper.close()
46-
response_bytes = bio.getvalue()
42+
with BytesIO() as bio:
43+
with gzip.GzipFile(fileobj=bio, mode="w") as zipper:
44+
zipper.write(response_bytes)
45+
response_bytes = bio.getvalue()
4746
return response_bytes
4847

4948
def write_back_bytes(self, response_bytes):
@@ -205,17 +204,16 @@ def test_server_and_default_headers(responder, read_method, parquet_engine):
205204

206205
# passing 0 for the port will let the system find an unused port
207206
with http.server.HTTPServer(("localhost", 0), responder) as server:
208-
server_thread = threading.Thread(target=server.serve_forever)
207+
server_thread = threading.Thread(target=server.handle_request)
209208
server_thread.start()
210209

211210
port = server.server_port
212211
if parquet_engine is None:
213212
df_http = read_method(f"http://localhost:{port}")
214213
else:
215214
df_http = read_method(f"http://localhost:{port}", engine=parquet_engine)
216-
server.shutdown()
217215
server.server_close()
218-
server_thread.join()
216+
server_thread.join(timeout=2)
219217
assert not df_http.empty
220218

221219

@@ -249,7 +247,7 @@ def test_server_and_custom_headers(responder, read_method, parquet_engine):
249247

250248
# passing 0 for the port will let the system find an unused port
251249
with http.server.HTTPServer(("localhost", 0), responder) as server:
252-
server_thread = threading.Thread(target=server.serve_forever)
250+
server_thread = threading.Thread(target=server.handle_request)
253251
server_thread.start()
254252

255253
port = server.server_port
@@ -264,10 +262,8 @@ def test_server_and_custom_headers(responder, read_method, parquet_engine):
264262
storage_options={"User-Agent": custom_user_agent},
265263
engine=parquet_engine,
266264
)
267-
server.shutdown()
268-
269265
server.server_close()
270-
server_thread.join()
266+
server_thread.join(timeout=2)
271267

272268
tm.assert_frame_equal(df_true, df_http)
273269

@@ -288,17 +284,16 @@ def test_server_and_all_custom_headers(responder, read_method):
288284

289285
# passing 0 for the port will let the system find an unused port
290286
with http.server.HTTPServer(("localhost", 0), responder) as server:
291-
server_thread = threading.Thread(target=server.serve_forever)
287+
server_thread = threading.Thread(target=server.handle_request)
292288
server_thread.start()
293289

294290
port = server.server_port
295291
df_http = read_method(
296292
f"http://localhost:{port}",
297293
storage_options=storage_options,
298294
)
299-
server.shutdown()
300295
server.server_close()
301-
server_thread.join()
296+
server_thread.join(timeout=2)
302297

303298
df_http = df_http[df_http["0"].isin(storage_options.keys())]
304299
df_http = df_http.sort_values(["0"]).reset_index()

0 commit comments

Comments
 (0)