Skip to content

Commit 98d35b4

Browse files
committed
explicitly spawn daemon thread for http server
1 parent 414173b commit 98d35b4

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

pytest_httpserver/httpserver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,8 @@ def start(self) -> None:
770770
)
771771

772772
self.port = self.server.port # Update port (needed if `port` was set to 0)
773-
self.server_thread = threading.Thread(target=self.thread_target)
773+
# Explicitly make the new thread daemonic to avoid shutdown issues
774+
self.server_thread = threading.Thread(target=self.thread_target, daemon=True)
774775
self.server_thread.start()
775776

776777
def stop(self):

tests/test_thread_type.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING
4+
5+
import requests
6+
import threading
7+
from werkzeug import Response
8+
9+
if TYPE_CHECKING:
10+
from werkzeug import Request
11+
from pytest_httpserver import HTTPServer
12+
13+
def test_server_thread_is_daemon(httpserver: HTTPServer):
14+
def handler(_request: Request):
15+
return Response(f"{threading.current_thread().daemon}")
16+
17+
httpserver.expect_request("/foo").respond_with_handler(handler)
18+
19+
assert requests.get(httpserver.url_for("/foo")).text == "True"

0 commit comments

Comments
 (0)