From 0e5a3169e2fe97905e3ef36cbec4849d8fb0b93b Mon Sep 17 00:00:00 2001 From: Frisk Date: Sat, 1 Aug 2020 22:28:08 +0200 Subject: [PATCH] Improved performance, increased timeout on requests, fixed variable overshadowing issue (aka 'a') --- src/bot.py | 2 +- src/discord.py | 10 +++++----- src/formatters/rc.py | 4 ++-- src/wiki.py | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/bot.py b/src/bot.py index 07297e1..a9217b5 100644 --- a/src/bot.py +++ b/src/bot.py @@ -80,7 +80,7 @@ async def wiki_scanner(): if local_wiki.mw_messages is None: extended = True async with aiohttp.ClientSession(headers=settings["header"], - timeout=aiohttp.ClientTimeout(2.0)) as session: + timeout=aiohttp.ClientTimeout(3.0)) as session: try: wiki_response = await local_wiki.fetch_wiki(extended, db_wiki["wiki"], session) await local_wiki.check_status(db_wiki["wiki"], wiki_response.status) diff --git a/src/discord.py b/src/discord.py index ad61a35..5bf5a3e 100644 --- a/src/discord.py +++ b/src/discord.py @@ -13,6 +13,10 @@ logger = logging.getLogger("rcgcdb.discord") # General functions +default_header = settings["header"] +default_header['Content-Type'] = 'application/json' +default_header["X-RateLimit-Precision"] = "millisecond" + # User facing webhook functions async def wiki_removal(wiki_url, status): @@ -142,13 +146,9 @@ async def send_to_discord_webhook(data: DiscordMessage, webhook_url: str) -> tup """Sends a message to webhook :return tuple(status code for request, rate limit info (None for can send more, string for amount of seconds to wait)""" - header = settings["header"] - header['Content-Type'] = 'application/json' - header["X-RateLimit-Precision"] = "millisecond" - async with aiohttp.ClientSession(headers=header, timeout=aiohttp.ClientTimeout(5.0)) as session: + async with aiohttp.ClientSession(headers=default_header, timeout=aiohttp.ClientTimeout(5.0)) as session: try: result = await session.post("https://discord.com/api/webhooks/"+webhook_url, data=repr(data)) - logger.debug(result.headers) rate_limit = None if int(result.headers.get('x-ratelimit-remaining', "-1")) > 0 else result.headers.get('x-ratelimit-reset-after', None) except (aiohttp.ClientConnectionError, aiohttp.ServerConnectionError, TimeoutError): logger.exception("Could not send the message to Discord") diff --git a/src/formatters/rc.py b/src/formatters/rc.py index 08b586d..a86c198 100644 --- a/src/formatters/rc.py +++ b/src/formatters/rc.py @@ -18,7 +18,7 @@ if 1 == 2: # additional translation strings in unreachable code print(_("director"), _("bot"), _("editor"), _("directors"), _("sysop"), _("bureaucrat"), _("reviewer"), _("autoreview"), _("autopatrol"), _("wiki_guardian"), ngettext("second", "seconds", 1), ngettext("minute", "minutes", 1), ngettext("hour", "hours", 1), ngettext("day", "days", 1), ngettext("week", "weeks", 1), ngettext("month", "months",1), ngettext("year", "years", 1), ngettext("millennium", "millennia", 1), ngettext("decade", "decades", 1), ngettext("century", "centuries", 1)) -async def compact_formatter(action, change, parsed_comment, categories, recent_changes, target, _, ngettext, paths, +async def compact_formatter(action, change, parsed_comment, categories, recent_changes, message_target, _, ngettext, paths, additional_data=None): """Recent Changes compact formatter, part of RcGcDw""" if additional_data is None: @@ -328,7 +328,7 @@ async def compact_formatter(action, change, parsed_comment, categories, recent_c return else: content = _("Unknown event `{event}` by [{author}]({author_url}), report it on the [support server](<{support}>).").format(event=action, author=author, author_url=author_url, support=settings["support"]) - await send_to_discord(DiscordMessage("compact", action, target[1], content=content, wiki=WIKI_SCRIPT_PATH)) + await send_to_discord(DiscordMessage("compact", action, message_target[1], content=content, wiki=WIKI_SCRIPT_PATH)) async def embed_formatter(action, change, parsed_comment, categories, recent_changes, target, _, ngettext, paths, additional_data=None): diff --git a/src/wiki.py b/src/wiki.py index 4d3c738..3fef827 100644 --- a/src/wiki.py +++ b/src/wiki.py @@ -52,8 +52,8 @@ class Wiki: @staticmethod async def safe_request(url, *keys): try: - async with aiohttp.ClientSession(headers=settings["header"], timeout=aiohttp.ClientTimeout(2.0)) as session: - request = await session.get(url, timeout=5, allow_redirects=False) + async with aiohttp.ClientSession(headers=settings["header"], timeout=aiohttp.ClientTimeout(3.0)) as session: + request = await session.get(url, allow_redirects=False) request.raise_for_status() json_request = await request.json(encoding="UTF-8") except (aiohttp.ClientConnectionError, aiohttp.ServerTimeoutError, asyncio.TimeoutError):