help: add taskoteka status and service ping to /altrepo_info

parent d1ebed32
import time
import asyncio
from telegrinder import Dispatch, Message from telegrinder import Dispatch, Message
from telegrinder.rules import Command from telegrinder.rules import Command
from telegrinder.tools.formatting import HTMLFormatter, link from telegrinder.tools.formatting import HTMLFormatter, link
...@@ -12,7 +15,22 @@ dp = Dispatch() ...@@ -12,7 +15,22 @@ dp = Dispatch()
@dp.message(Command("altrepo_info")) @dp.message(Command("altrepo_info"))
async def info_handler(m: Message) -> None: async def info_handler(m: Message) -> None:
api_data = await altrepo.api.version()
async def ping_api():
start = time.monotonic()
data = await altrepo.api.version()
ms = int((time.monotonic() - start) * 1000)
return data, ms
async def ping_taskoteka():
start = time.monotonic()
data = await altrepo.taskoteka.health()
ms = int((time.monotonic() - start) * 1000)
return data, ms
(api_data, api_ping), (taskoteka_data, taskoteka_ping) = await asyncio.gather(
ping_api(), ping_taskoteka()
)
repos_formatted = "\n".join( repos_formatted = "\n".join(
f" - {HTMLFormatter(link(url, text=name))}" for name, url in bot_repositories f" - {HTMLFormatter(link(url, text=name))}" for name, url in bot_repositories
...@@ -26,13 +44,20 @@ async def info_handler(m: Message) -> None: ...@@ -26,13 +44,20 @@ async def info_handler(m: Message) -> None:
f"{_bold("ALTRepo API:")}\n" f"{_bold("ALTRepo API:")}\n"
f" Актуальная версия: {api_data.version}\n" f" Актуальная версия: {api_data.version}\n"
f" Поддерживаемая ботом: {altrepo.api.BASE_API_VERSION}\n\n" f" Поддерживаемая ботом: {altrepo.api.BASE_API_VERSION}\n"
f" Пинг: {api_ping}ms\n\n"
f"{_bold("Taskoteka:")}\n"
f" Статус: {taskoteka_data.status}\n"
f" Активных задач: {taskoteka_data.active_tasks}\n"
f" Всего задач: {taskoteka_data.total_tasks}\n"
f" Пинг: {taskoteka_ping}ms\n\n"
f"{_bold("ALTRepo Bot DB:")}\n" f"{_bold("Bot DB:")}\n"
f" Сопровождающих в базе: {DB.maintainer.count()}\n" f" Сопровождающих в базе: {DB.maintainer.count()}\n"
f" Пакетов переведено: {DB.package.count()}\n\n" f" Пакетов переведено: {DB.package.count()}\n\n"
f"{_bold("ALTRepo Bot AppStream Data:")}\n" f"{_bold("Bot AppStream Data:")}\n"
f" Sisyphus: {altrepo.appstream.data.get_current_version("sisyphus")}\n" f" Sisyphus: {altrepo.appstream.data.get_current_version("sisyphus")}\n"
f" P11: {altrepo.appstream.data.get_current_version("p11")}\n\n" f" P11: {altrepo.appstream.data.get_current_version("p11")}\n\n"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment