Add ollama status checker
All checks were successful
Build and Publish Jimmy.2 / build_and_publish (push) Successful in 6s

This commit is contained in:
Nexus 2024-05-28 00:57:18 +01:00
parent 6ed7de1d73
commit 38f47b9699
Signed by: nex
GPG key ID: 0FA334385D0B689F

View file

@ -907,7 +907,7 @@ class Ollama(commands.Cog):
messages = self.history.get_history(thread)
embed = discord.Embed(description="*Waking Ollama up...*")
self.log.debug("Acquiring lock")
async with self.lock:
async with self.servers[server]:
await ctx.respond(embed=embed, ephemeral=True)
last_edit = time.time()
msg = None
@ -937,6 +937,34 @@ class Ollama(commands.Cog):
embed.colour = discord.Colour.dark_theme()
return await msg.edit(embed=embed)
@commands.command()
async def ollama_status(self, ctx: commands.Context):
embed = discord.Embed(
title="Ollama server statuses:",
color=discord.Color.blurple(),
timestamp=discord.utils.utcnow(),
)
for server, lock in self.servers.items():
embed.add_field(
name=server,
value="\U000026a0\U0000fe0fIn use" if lock.locked() else "\U000023f3 Checking..."
)
msg = await ctx.reply(embed=embed)
last_edit = time.time()
for server in self.servers.items():
try:
ok = await self.check_server(CONFIG["ollama"][server]["base_url"])
except Exception as e:
ok = False
self.log.error("Error while checking server %r: %r", server, e)
for field in embed.fields:
if field.name == server:
field.value = "\U00002705 Online" if ok else "\U0000274c Offline"
break
await asyncio.sleep(1 - (time.time() - last_edit))
await msg.edit(embed=embed)
def setup(bot):
bot.add_cog(Ollama(bot))