aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/info/doc/_cog.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/bot/exts/info/doc/_cog.py b/bot/exts/info/doc/_cog.py
index ac74e7997..43407d5ba 100644
--- a/bot/exts/info/doc/_cog.py
+++ b/bot/exts/info/doc/_cog.py
@@ -66,7 +66,7 @@ class DocCog(commands.Cog):
self.renamed_symbols = defaultdict(list)
self.inventory_scheduler = Scheduler(self.__class__.__name__)
- self.scheduled_inventories = set()
+ self.inventory_reschedule_attempts = defaultdict(int)
self.refresh_event = asyncio.Event()
self.refresh_event.set()
@@ -134,20 +134,20 @@ class DocCog(commands.Cog):
package = await fetch_inventory(inventory_url)
if not package:
- if inventory_url not in self.scheduled_inventories:
+ attempt = self.inventory_reschedule_attempts[package]
+ self.inventory_reschedule_attempts[package] += 1
+ if attempt == 0:
delay = FETCH_RESCHEDULE_DELAY.first
else:
delay = FETCH_RESCHEDULE_DELAY.repeated
log.info(f"Failed to fetch inventory; attempting again in {delay} minutes.")
self.inventory_scheduler.schedule_later(
delay*60,
- api_package_name,
+ (attempt, api_package_name),
self.update_or_reschedule_inventory(api_package_name, base_url, inventory_url)
)
- self.scheduled_inventories.add(api_package_name)
return
- self.scheduled_inventories.discard(api_package_name)
self.update_single(api_package_name, base_url, package)
def ensure_unique_symbol_name(
@@ -209,6 +209,7 @@ class DocCog(commands.Cog):
self.refresh_event.clear()
log.debug("Refreshing documentation inventory...")
self.inventory_scheduler.cancel_all()
+ self.inventory_reschedule_attempts.clear()
# Clear the old base URLS and doc symbols to ensure
# that we start from a fresh local dataset.
@@ -216,7 +217,6 @@ class DocCog(commands.Cog):
self.base_urls.clear()
self.doc_symbols.clear()
self.renamed_symbols.clear()
- self.scheduled_inventories.clear()
await self.item_fetcher.clear()
# Run all coroutines concurrently - since each of them performs an HTTP