Skip to content

Commit 653e93f

Browse files
committed
Add new stop() function
1 parent 8d5ed8e commit 653e93f

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

README.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ Constructor - srv = MicroPyServer(host="0.0.0.0", port=80)
232232

233233
Start server - srv.start()
234234

235+
Stop server - srv.stop()
236+
235237
Add new route - srv.add_route(path, handler, method="GET")
236238

237239
Send response to client - srv.send(response)
@@ -249,14 +251,14 @@ Set handler on server error - server.on_error(handler)
249251

250252
Send response to client - utils.send_response(server, response, http_code=200, content_type="text/html", extend_headers=None)
251253

252-
Get HTTP request method (example of return value: POST) - utils.get_request_method(request)
254+
Return HTTP request method (example of return value: POST) - utils.get_request_method(request)
253255

254-
Return HTTP request query string (example of return value: param_one=one&param_two=two) - utils.get_request_query_string(request)
256+
Return http request query string (example of return value: param_one=one&param_two=two) - utils.get_request_query_string(request)
255257

256258
Return params from query string (example of return value: {"param_one": "one", "param_two": "two"}) - utils.parse_query_string(query_string)
257259

258-
Return HTTP request query params (example of return value: {"param_one": "one", "param_two": "two"}) - utils.get_request_query_params(request)
260+
Return http request query params (example of return value: {"param_one": "one", "param_two": "two"}) - utils.get_request_query_params(request)
259261

260262
Return params from POST request (example of return value: {"param_one": "one", "param_two": "two"}) - utils.get_request_post_params(request)
261263

262-
Unquote string - utils.unquote(string)
264+
Unquote string - unquote(string)

micropyserver.py

+17-5
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,20 @@ def __init__(self, host="0.0.0.0", port=80):
4242
self._on_request_handler = None
4343
self._on_not_found_handler = None
4444
self._on_error_handler = None
45+
self._sock = None
4546

4647
def start(self):
4748
""" Start server """
48-
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
49-
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
50-
sock.bind((self._host, self._port))
51-
sock.listen(1)
49+
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
50+
self._sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
51+
self._sock.bind((self._host, self._port))
52+
self._sock.listen(1)
53+
print("Server start")
5254
while True:
55+
if self._sock is None:
56+
break
5357
try:
54-
self._connect, address = sock.accept()
58+
self._connect, address = self._sock.accept()
5559
request = self.get_request()
5660
if len(request) == 0:
5761
self._connect.close()
@@ -69,6 +73,13 @@ def start(self):
6973
finally:
7074
self._connect.close()
7175

76+
def stop(self):
77+
""" Stop the server """
78+
self._connect.close()
79+
self._sock.close()
80+
self._sock = None
81+
print("Server stop")
82+
7283
def add_route(self, path, handler, method="GET"):
7384
""" Add new route """
7485
self._routes.append(
@@ -140,3 +151,4 @@ def _internal_error(self, error):
140151
self.send("Error: " + str_error)
141152
print(str_error)
142153

154+

0 commit comments

Comments
 (0)