From 3b14691aeabd9b100000ca79f3cbea07c40c16bc Mon Sep 17 00:00:00 2001 From: RTAkland Date: Sat, 18 Dec 2021 21:41:24 +0800 Subject: [PATCH] feat: change multiprocessing to concurrent --- core/qweather.py | 2 +- {tests => lib}/webserver.py | 53 ++++++++++++++++++++++--------------- 2 files changed, 33 insertions(+), 22 deletions(-) rename {tests => lib}/webserver.py (91%) diff --git a/core/qweather.py b/core/qweather.py index ec83eb3..f1f96f9 100644 --- a/core/qweather.py +++ b/core/qweather.py @@ -13,7 +13,7 @@ from concurrent.futures import ProcessPoolExecutor from core.logger import Logger from core.language import Language from core.settings import change_settings -from tests import webserver +from lib import webserver from core import read_config from core.sendmail import Mail diff --git a/tests/webserver.py b/lib/webserver.py similarity index 91% rename from tests/webserver.py rename to lib/webserver.py index 00c0420..4471510 100644 --- a/tests/webserver.py +++ b/lib/webserver.py @@ -3,9 +3,11 @@ # @Author: markushammered@gmail.com # @Development Tool: PyCharm # @Create Time: 2021/12/18 -# @File Name: web_weather.py +# @File Name: webserver.py + import socket +import sys from core.logger import Logger from core.read_config import read_config from core.information import WeatherInfo @@ -47,6 +49,7 @@ def build_html(): Title +

地区:{city}


@@ -161,7 +164,9 @@ def build_html(): Github Repo - """ + + + """ return html case 'free': dev_weather = WeatherInfo().free_version() @@ -189,6 +194,7 @@ def build_html(): Title +

地区:{city}


@@ -274,28 +280,33 @@ def build_html(): Github Repo - """ + + + """ return html case _: return "You hadn't selected a mode" def process_request(): - while True: - c, a = server.accept() - data = str(c.recv(1024)).split(':')[0][6:][:-17] - html = build_html() - if data == '/': - c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8')) - c.send(html.encode('utf-8')) - Logger.info(f'{a}: Get {data} --by browser') - else: - print(data) - try: - with open(f'.{data}', 'rb') as f: - c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8')) - c.send(f.read()) - Logger.info(f'{a}: Get {data} --by browser') - except FileNotFoundError: - c.send(f'HTTP1.1/ 404 Not Found\r\n\r\n{html}'.encode('utf-8')) - c.close() + try: + while True: + c, a = server.accept() + data = str(c.recv(1024)).split(':')[0][6:][:-17] + html = build_html() + if data == '/': + c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8')) + c.send(html.encode('utf-8')) + Logger.info(f'{a}: Get {data} --by browser') + else: + try: + with open(f'.{data}', 'rb') as f: + c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8')) + c.send(f.read()) + Logger.info(f'{a}: Get {data} --by browser') + except FileNotFoundError: + c.send(f'HTTP1.1/ 404 Not Found\r\n\r\n{html}'.encode('utf-8')) + c.close() + except BrokenPipeError: + Logger.critical('Link speed was too fast! Subprocess:webserver exited') + sys.exit(1)