Jack Sparrow
03/11/2025, 12:10 PMAndy Carter
03/11/2025, 12:54 PMAndy Carter
03/11/2025, 12:54 PMReuben (Matatika)
03/11/2025, 12:57 PMJack Sparrow
03/11/2025, 2:20 PMEdgar Ramírez (Arch.dev)
03/11/2025, 3:40 PMNick Mitchum
03/11/2025, 8:26 PMdef check_rate_limit(account_number, **kwargs):
"""Check rate limits for an account. If limits exceed 50%, trigger a retry."""
headers = {"Authorization": f"Bearer {FACEBOOK_ACCESS_TOKEN}"}
url = f"<https://graph.facebook.com/v20.0/act_{account_number}>" if account_number != "me" else "<https://graph.facebook.com/v20.0/me>"
response = requests.get(url, headers=headers)
if response.status_code == 200:
app_usage = json.loads(response.headers.get("X-App-Usage", "{}"))
business_usage = json.loads(response.headers.get("x-business-use-case-usage", "{}"))
call_count = app_usage.get("call_count", 0)
total_cputime = app_usage.get("total_cputime", 0)
total_time = app_usage.get("total_time", 0)
account_usage = business_usage.get(str(account_number), [{}])
if isinstance(account_usage, list) and account_usage:
account_usage = account_usage[0]
else:
account_usage = {}
account_call_count = account_usage.get("call_count", 0)
account_cputime = account_usage.get("total_cputime", 0)
account_total_time = account_usage.get("total_time", 0)
print(f"\nRate Limits for {account_number}:")
print(f" App-Level Call Count: {call_count}%")
print(f" App-Level CPU Time: {total_cputime}%")
print(f" App-Level Total Time: {total_time}%")
print(f" Account-Level Call Count: {account_call_count}%")
print(f" Account-Level CPU Time: {account_cputime}%")
print(f" Account-Level Total Time: {account_total_time}%")
if (
call_count > 50 or total_cputime > 50 or total_time > 50 or
account_call_count > 50 or account_cputime > 50 or account_total_time > 50
):
Jack Sparrow
03/12/2025, 8:06 AMJack Sparrow
03/12/2025, 8:22 AMNick Mitchum
03/12/2025, 2:05 PMJack Sparrow
03/12/2025, 3:34 PMNick Mitchum
03/12/2025, 3:36 PM