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)