Configuration
The client is configured via RMPClientConfig. All fields have sensible defaults.
from rmp_client import RMPClientConfig, RMPClient
config = RMPClientConfig(
base_url="https://www.ratemyprofessors.com/graphql",
timeout_seconds=10.0,
max_retries=3,
rate_limit_per_minute=60,
)
with RMPClient(config) as client:
...
Available Options #
| Option | Type | Default | Description |
|---|---|---|---|
base_url | str | https://...graphql | GraphQL endpoint URL |
timeout_seconds | float | 10.0 | HTTP request timeout |
max_retries | int | 3 | Number of retry attempts for failed requests |
rate_limit_per_minute | int | 60 | Max requests per minute (token bucket) |
user_agent | str | Firefox UA | User-Agent header |
default_headers | Mapping[str, str] | UA + Accept-Language | Default headers for all requests |
Rate Limiting #
The client uses a token-bucket algorithm. Tokens replenish continuously. Each request consumes one token. If no tokens are available, the request blocks until one becomes available.
config = RMPClientConfig(rate_limit_per_minute=30)
Retries #
On 5xx errors or network failures, the client retries up to max_retries times. 4xx errors are not retried. After exhausting retries, a RetryError is raised.
config = RMPClientConfig(max_retries=5)
Timeouts #
The timeout_seconds value applies to each individual HTTP request (connect + read).
config = RMPClientConfig(timeout_seconds=30.0)