import requests
import os
import time
retry_attempts = 3
wait_time = 5 # seconds
def fetch_data():
for attempt in range(retry_attempts):
# Get API key from environment variable or set directly
# For security reasons, it's better to use environment variables
api_key = os.environ.get('TOKEN_TERMINAL_API_KEY', '')
# Set up headers with API key
headers = {
'Authorization': f'Bearer {api_key}'
}
response = requests.get(
'https://api.tokenterminal.com/v2/metrics/revenue',
headers=headers,
params={
'project_ids': 'uniswap',
'chain_ids': 'ethereum',
'start_date': '2024-01-01',
'end_date': '2024-03-01'
}
)
# Here, just handle the rate limit case
if response.status_code == 429:
print(f"Rate limited. Waiting for {wait_time} seconds.")
time.sleep(wait_time)
wait_time *= 2 # exponential backoff
else:
print(f"Unexpected error: {response.status_code}")
print(f"Response: {response.text}")
if __name__ == "__main__":
fetch_data()