Add ratelimit retry to discord changelog bot and continue publish changelog error. (#37051)
* Add ratelimit retry to discord changelog bot and continue publish changelog error. oops we missed some changelogs cause of this... this should prevent anything funny * Update actions_changelogs_since_last_run.py
This commit is contained in:
@@ -13,6 +13,7 @@ from typing import Any, Iterable
|
||||
|
||||
import requests
|
||||
import yaml
|
||||
import time
|
||||
|
||||
DEBUG = False
|
||||
DEBUG_CHANGELOG_FILE_OLD = Path("Resources/Changelog/Old.yml")
|
||||
@@ -148,9 +149,23 @@ def get_discord_body(content: str):
|
||||
def send_discord_webhook(lines: list[str]):
|
||||
content = "".join(lines)
|
||||
body = get_discord_body(content)
|
||||
retry_attempt = 0
|
||||
|
||||
response = requests.post(DISCORD_WEBHOOK_URL, json=body)
|
||||
response.raise_for_status()
|
||||
try:
|
||||
response = requests.post(DISCORD_WEBHOOK_URL, json=body, timeout=10)
|
||||
while response.status_code == 429:
|
||||
retry_attempt += 1
|
||||
if retry_attempt > 20:
|
||||
print("Too many retries on a single request despite following retry_after header... giving up")
|
||||
exit(1)
|
||||
retry_after = response.json().get("retry_after", 5)
|
||||
print(f"Rate limited, retrying after {retry_after} seconds")
|
||||
time.sleep(retry_after)
|
||||
response = requests.post(DISCORD_WEBHOOK_URL, json=body, timeout=10)
|
||||
response.raise_for_status()
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Failed to send message: {e}")
|
||||
exit(1)
|
||||
|
||||
|
||||
def changelog_entries_to_message_lines(entries: Iterable[ChangelogEntry]) -> list[str]:
|
||||
|
||||
Reference in New Issue
Block a user