implement: cache

This commit is contained in:
Дмитрий Абдрахманов 2024-09-09 11:14:32 +03:00
parent 2be0fe6ec5
commit cce24c469a
2 changed files with 22 additions and 12 deletions

View File

@ -1,3 +1,5 @@
from datetime import datetime
from functools import cache
from http.server import BaseHTTPRequestHandler, HTTPServer from http.server import BaseHTTPRequestHandler, HTTPServer
import json import json
import urllib.request import urllib.request
@ -11,19 +13,11 @@ def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
class WeatherHandler(BaseHTTPRequestHandler): class WeatherHandler(BaseHTTPRequestHandler):
def do_GET(self): def do_GET(self):
return self.weather_handler() return self.data_output()
def weather_handler(self): def data_output(self):
coordinates = [48.712, 44.514] date = datetime.today().strftime("%Y-%m-%d %H")
url = ( raw_data = weather_handler(date)
"https://api.open-meteo.com/v1/forecast?latitude="
+ str(coordinates[0])
+ "&longitude="
+ str(coordinates[1])
+ "&current=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m"
)
raw_data = urllib.request.urlopen(url).read()
print(raw_data)
return self.render(200, raw_data) return self.render(200, raw_data)
def render(self, response_code: int, response_body: dict | None = None): def render(self, response_code: int, response_body: dict | None = None):
@ -33,3 +27,19 @@ class WeatherHandler(BaseHTTPRequestHandler):
self.end_headers() self.end_headers()
if response_body is not None: if response_body is not None:
self.wfile.write(response_body) self.wfile.write(response_body)
@cache
def weather_handler(date: str):
print(date)
coordinates = [48.712, 44.514]
url = (
"https://api.open-meteo.com/v1/forecast?latitude="
+ str(coordinates[0])
+ "&longitude="
+ str(coordinates[1])
+ "&current=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m"
)
raw_data = urllib.request.urlopen(url).read()
# print(raw_data)
return raw_data