diff --git a/src/cogs/ollama.py b/src/cogs/ollama.py index b216fe5..248a937 100644 --- a/src/cogs/ollama.py +++ b/src/cogs/ollama.py @@ -978,20 +978,26 @@ class Ollama(commands.Cog): msg = await ctx.reply(embed=embed) last_edit = time.time() + + tasks = {} for server in self.servers.keys(): if self.servers[server].locked(): continue - try: - ok = await self.check_server(CONFIG["ollama"][server]["base_url"]) - except Exception as e: - ok = False + tasks[server] = asyncio.create_task(self.check_server(CONFIG["ollama"][server]["base_url"])) + + await asyncio.gather(*tasks.values()) + for server, task in tasks.items(): + if not task.done: + await task + if e := task.exception(): self.log.error("Error while checking server %r: %r", server, e, exc_info=True) - 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) + else: + ok = task.result() + for field in embed.fields: + if field.name == server: + field.value = "\U00002705 Online" if ok else "\U0000274c Offline" + break + await msg.edit(embed=embed) def setup(bot):