Skip to content

Commit 76003ae

Browse files
committed
Make it more async
1 parent 0df1c20 commit 76003ae

3 files changed

Lines changed: 17 additions & 8 deletions

File tree

mariusz/main.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def __init__(
142142
self.mumble_last_check = time.time()
143143
self.wiki_last_update = time.time()
144144
self.wiki_last_check = time.time()
145-
self.wiki_msg = mariusz.wiki.build_wiki_message()
145+
self.wiki_msg: str | None = None
146146

147147
if path_to_chat_db:
148148
self.chat_db: ChatDb | None = ChatDb(path_to_chat_db)
@@ -354,10 +354,15 @@ async def maybe_update_meetup_message(self) -> None:
354354

355355
async def maybe_update_wiki(self) -> None:
356356
"""Check if anybody wrote anything on our wiki."""
357+
if self.wiki_msg is None:
358+
# Initialize here, as we can't invoke async functions in __init__
359+
self.wiki_msg = await mariusz.wiki.build_wiki_message()
360+
return
361+
357362
now = time.time()
358363
if now - self.wiki_last_check < 60:
359364
return
360-
msg = mariusz.wiki.build_wiki_message()
365+
msg = await mariusz.wiki.build_wiki_message()
361366
differs = self.wiki_msg != msg
362367
late_enough = abs(now - self.wiki_last_update) > 60
363368
no_error = msg and self.wiki_msg

mariusz/wiki.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,30 @@
44

55
import dateutil.parser
66
import lxml.etree as E
7-
import requests
7+
import httpx
88

99
NS = "{http://www.w3.org/2005/Atom}"
1010

1111

12-
def get_wiki_entries(url: str):
12+
async def get_wiki_entries(url: str):
1313
"""Returns all Wiki entries for a given URL."""
14-
tree = E.fromstring(requests.get(url, timeout=10).text.encode())
14+
async with httpx.AsyncClient() as client:
15+
r = await client.get(url, timeout=10)
16+
r.raise_for_status()
17+
text = r.text.encode()
18+
tree = E.fromstring(text)
1519
entry_f = E.ETXPath(NS + "entry")
1620
entries = entry_f(tree)
1721
updated_f = E.ETXPath(".//" + NS + "updated/text()")
1822
entries.sort(key=lambda e: dateutil.parser.parse(updated_f(e)[0]))
1923
return entries
2024

2125

22-
def build_wiki_message() -> str:
26+
async def build_wiki_message() -> str:
2327
"""Builds a message describing the current state of the wiki."""
2428
wiki_url = "https://github.com/hakierspejs/wiki/wiki.atom"
2529
try:
26-
entries = get_wiki_entries(wiki_url)
30+
entries = await get_wiki_entries(wiki_url)
2731
if not entries:
2832
return ""
2933
latest = entries.pop()

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ python-telegram-bot==21.9 # try python-telegram-bot<20.0 if you have issues
22
standard-imghdr
33
python-dateutil
44
lxml
5-
requests
5+
httpx
66
humanize==2.0.0
77
meetupscraper>=0.11.0
88
parameterized

0 commit comments

Comments
 (0)