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 #

OptionTypeDefaultDescription
base_urlstrhttps://...graphqlGraphQL endpoint URL
timeout_secondsfloat10.0HTTP request timeout
max_retriesint3Number of retry attempts for failed requests
rate_limit_per_minuteint60Max requests per minute (token bucket)
user_agentstrFirefox UAUser-Agent header
default_headersMapping[str, str]UA + Accept-LanguageDefault 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)