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,
)
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 |
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 fixed at 60 requests per minute. Tokens replenish continuously at 1 per second. Each request consumes one token; if none are available the request blocks until one becomes available. This limit is not configurable.
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. Each retry attempt consumes a token
from the rate limiter before firing.
| Situation | Retried? |
|---|---|
| Network error (timeout, connection reset) | Yes |
| 5xx server error | Yes |
| 4xx client error (400, 401, 403, 404) | No — raises HttpError immediately |
| 429 Too Many Requests | Yes — exponential back-off, up to max_retries times |
GraphQL errors in a 200 response |
No — raises RMPAPIError immediately |
config = RMPClientConfig(max_retries=5)
Timeouts #
The timeout_seconds value applies to each individual HTTP
request (connect + read).
config = RMPClientConfig(timeout_seconds=30.0)