Don't bother with httpx for the space launch API
This commit is contained in:
parent
073f452356
commit
566b09f888
|
@ -5,7 +5,7 @@ import os
|
||||||
import typing
|
import typing
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import httpx
|
import requests
|
||||||
|
|
||||||
Launch = dict[str, typing.Any]
|
Launch = dict[str, typing.Any]
|
||||||
Summary = dict[str, typing.Any]
|
Summary = dict[str, typing.Any]
|
||||||
|
@ -13,15 +13,14 @@ Summary = dict[str, typing.Any]
|
||||||
ttl = 60 * 60 * 2 # two hours
|
ttl = 60 * 60 * 2 # two hours
|
||||||
|
|
||||||
|
|
||||||
async def next_launch_api(rocket_dir: str, limit: int = 200) -> list[Launch]:
|
def next_launch_api(rocket_dir: str, limit: int = 200) -> list[Launch]:
|
||||||
"""Get the next upcoming launches from the API."""
|
"""Get the next upcoming launches from the API."""
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
filename = os.path.join(rocket_dir, now.strftime("%Y-%m-%d_%H:%M:%S.json"))
|
filename = os.path.join(rocket_dir, now.strftime("%Y-%m-%d_%H:%M:%S.json"))
|
||||||
url = "https://ll.thespacedevs.com/2.2.0/launch/upcoming/"
|
url = "https://ll.thespacedevs.com/2.2.0/launch/upcoming/"
|
||||||
|
|
||||||
params: dict[str, str | int] = {"limit": limit}
|
params: dict[str, str | int] = {"limit": limit}
|
||||||
async with httpx.AsyncClient() as client:
|
r = requests.get(url, params=params)
|
||||||
r = await client.get(url, params=params)
|
|
||||||
open(filename, "w").write(r.text)
|
open(filename, "w").write(r.text)
|
||||||
data = r.json()
|
data = r.json()
|
||||||
return [summarize_launch(launch) for launch in data["results"]]
|
return [summarize_launch(launch) for launch in data["results"]]
|
||||||
|
@ -151,7 +150,7 @@ def read_cached_launches(rocket_dir: str) -> list[Summary]:
|
||||||
return [summarize_launch(launch) for launch in data["results"]]
|
return [summarize_launch(launch) for launch in data["results"]]
|
||||||
|
|
||||||
|
|
||||||
async def get_launches(
|
def get_launches(
|
||||||
rocket_dir: str, limit: int = 200, refresh: bool = False
|
rocket_dir: str, limit: int = 200, refresh: bool = False
|
||||||
) -> list[Summary]:
|
) -> list[Summary]:
|
||||||
"""Get rocket launches with caching."""
|
"""Get rocket launches with caching."""
|
||||||
|
@ -161,10 +160,7 @@ async def get_launches(
|
||||||
existing.sort(reverse=True)
|
existing.sort(reverse=True)
|
||||||
|
|
||||||
if refresh or not existing or (now - existing[0][0]).seconds > ttl:
|
if refresh or not existing or (now - existing[0][0]).seconds > ttl:
|
||||||
try:
|
return next_launch_api(rocket_dir, limit=limit)
|
||||||
return await next_launch_api(rocket_dir, limit=limit)
|
|
||||||
except httpx.ReadTimeout:
|
|
||||||
pass
|
|
||||||
|
|
||||||
f = existing[0][1]
|
f = existing[0][1]
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
"""Update cache of space launch API."""
|
"""Update cache of space launch API."""
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from time import time
|
from time import time
|
||||||
|
@ -11,14 +10,9 @@ import agenda.thespacedevs
|
||||||
config = __import__("config.default", fromlist=[""])
|
config = __import__("config.default", fromlist=[""])
|
||||||
rocket_dir = os.path.join(config.DATA_DIR, "thespacedevs")
|
rocket_dir = os.path.join(config.DATA_DIR, "thespacedevs")
|
||||||
|
|
||||||
|
|
||||||
async def get_launches() -> list[agenda.thespacedevs.Launch]:
|
|
||||||
"""Call space launch API and cache results."""
|
|
||||||
return await agenda.thespacedevs.next_launch_api(rocket_dir)
|
|
||||||
|
|
||||||
|
|
||||||
t0 = time()
|
t0 = time()
|
||||||
rockets = asyncio.run(get_launches())
|
|
||||||
|
rockets = agenda.thespacedevs.next_launch_api(rocket_dir)
|
||||||
time_taken = time() - t0
|
time_taken = time() - t0
|
||||||
if not sys.stdin.isatty():
|
if not sys.stdin.isatty():
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
Loading…
Reference in a new issue