HyperliquidSession

Documentation for eth_defi.hyperliquid.session.HyperliquidSession Python class.

class HyperliquidSession

Bases: requests.sessions.Session

A requests.Session subclass that carries the Hyperliquid API URL.

All Hyperliquid API functions accept a HyperliquidSession and read api_url from it, removing the need for a separate server_url argument on every call.

The session optionally manages a ProxyRotator for automatic proxy rotation on failure. Use configure_rotator() or pass rotator to create_hyperliquid_session().

Use create_hyperliquid_session() to create instances.

Attributes summary

active_proxy_url

Currently active proxy URL, or None if proxies are disabled.

proxy_count

Number of configured proxies.

proxy_enabled

Whether proxy support is enabled (at least one proxy configured).

proxy_failures

Rotation generation count (increases with each rotation).

proxy_urls

All configured proxy URLs.

request_count

Total HTTP requests made via post_info().

rotation_count

Total proxy rotations triggered by failures in post_info().

rotator

The configured ProxyRotator, or None if proxies are disabled.

api_url

Hyperliquid API base URL (e.g.

max_proxy_rotations

Maximum proxy rotations per post_info() call before giving up

Methods summary

__init__([api_url])

clone_for_worker([proxy_start_index])

Create a lightweight clone for a worker thread.

close()

Closes all adapters and as such the session

configure_rotator(rotator)

Configure proxy rotation using a ProxyRotator.

delete(url, **kwargs)

Sends a DELETE request.

get(url, **kwargs)

Sends a GET request.

get_adapter(url)

Returns the appropriate connection adapter for the given URL.

get_redirect_target(resp)

Receives a Response.

head(url, **kwargs)

Sends a HEAD request.

merge_environment_settings(url, proxies, ...)

Check the environment and merge it with some settings.

mount(prefix, adapter)

Registers a connection adapter to a prefix.

options(url, **kwargs)

Sends a OPTIONS request.

patch(url[, data])

Sends a PATCH request.

post(url[, data, json])

Sends a POST request.

post_info(payload[, timeout])

POST to the Hyperliquid /info endpoint with proxy rotation.

prepare_request(request)

Constructs a PreparedRequest for transmission and returns it.

put(url[, data])

Sends a PUT request.

rebuild_auth(prepared_request, response)

When being redirected we may want to strip authentication from the request to avoid leaking credentials.

rebuild_method(prepared_request, response)

When being redirected we may want to change the method of the request based on certain specs or browser behavior.

rebuild_proxies(prepared_request, proxies)

This method re-evaluates the proxy configuration by considering the environment variables.

request(method, url[, params, data, ...])

Constructs a Request, prepares it and sends it.

resolve_redirects(resp, req[, stream, ...])

Receives a Response.

send(request, **kwargs)

Send a given PreparedRequest.

should_strip_auth(old_url, new_url)

Decide whether Authorization header should be removed when redirecting

__init__(api_url='https://api.hyperliquid.xyz')
Parameters

api_url (str) –

api_url: str

Hyperliquid API base URL (e.g. https://api.hyperliquid.xyz).

max_proxy_rotations: int

Maximum proxy rotations per post_info() call before giving up

configure_rotator(rotator)

Configure proxy rotation using a ProxyRotator.

The rotator provides thread-safe proxy selection and persistent failure tracking via its optional ProxyStateManager.

Parameters

rotator (eth_defi.event_reader.webshare.ProxyRotator) – A ProxyRotator (typically from load_proxy_rotator()).

Return type

None

property rotator: eth_defi.event_reader.webshare.ProxyRotator | None

The configured ProxyRotator, or None if proxies are disabled.

property proxy_urls: list[str]

All configured proxy URLs.

property proxy_count: int

Number of configured proxies.

property proxy_enabled: bool

Whether proxy support is enabled (at least one proxy configured).

property active_proxy_url: str | None

Currently active proxy URL, or None if proxies are disabled.

property proxy_failures: int

Rotation generation count (increases with each rotation).

property request_count: int

Total HTTP requests made via post_info().

property rotation_count: int

Total proxy rotations triggered by failures in post_info().

post_info(payload, timeout=30.0)

POST to the Hyperliquid /info endpoint with proxy rotation.

Uses the session’s configured proxy (if any). On connection errors or HTTP 429/5xx responses, rotates to the next proxy and retries. After MAX_PROXY_ROTATIONS consecutive failures in a single call, falls back to a direct (no-proxy) connection for the remainder of this request.

Failures are recorded via the rotator’s ProxyStateManager so that persistently bad proxies are skipped in future runs.

Parameters
  • payload (dict) – JSON request body for the /info endpoint.

  • timeout (float) – HTTP request timeout in seconds.

Returns

The requests.Response object.

Raises
  • requests.ConnectionError – If the request fails and no proxy rotation is available.

  • requests.Timeout – If the request times out and no proxy rotation is available.

Return type

requests.models.Response

clone_for_worker(proxy_start_index=0)

Create a lightweight clone for a worker thread.

The clone shares the same API URL. When proxies are configured, the clone gets its own ProxyRotator starting at proxy_start_index so that each worker hits a different proxy. The underlying ProxyStateManager is shared, so failures recorded by any worker are persisted globally.

Each clone gets its own independent rate limiter because Hyperliquid rate limits are per IP. When workers use different proxies, each proxy IP gets its full rate allowance.

Parameters

proxy_start_index (int) – Starting proxy index for this worker (typically the worker ordinal: 0, 1, 2, …).

Returns

A new HyperliquidSession with its own proxy rotation state and rate limiter.

Return type

eth_defi.hyperliquid.session.HyperliquidSession

close()

Closes all adapters and as such the session

delete(url, **kwargs)

Sends a DELETE request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

get(url, **kwargs)

Sends a GET request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

get_adapter(url)

Returns the appropriate connection adapter for the given URL.

Return type

requests.adapters.BaseAdapter

get_redirect_target(resp)

Receives a Response. Returns a redirect URI or None

head(url, **kwargs)

Sends a HEAD request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

merge_environment_settings(url, proxies, stream, verify, cert)

Check the environment and merge it with some settings.

Return type

dict

mount(prefix, adapter)

Registers a connection adapter to a prefix.

Adapters are sorted in descending order by prefix length.

options(url, **kwargs)

Sends a OPTIONS request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

patch(url, data=None, **kwargs)

Sends a PATCH request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

post(url, data=None, json=None, **kwargs)

Sends a POST request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • json – (optional) json to send in the body of the Request.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

prepare_request(request)

Constructs a PreparedRequest for transmission and returns it. The PreparedRequest has settings merged from the Request instance and those of the Session.

Parameters

requestRequest instance to prepare with this session’s settings.

Return type

requests.PreparedRequest

put(url, data=None, **kwargs)

Sends a PUT request. Returns Response object.

Parameters
  • url – URL for the new Request object.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • **kwargs – Optional arguments that request takes.

Return type

requests.Response

rebuild_auth(prepared_request, response)

When being redirected we may want to strip authentication from the request to avoid leaking credentials. This method intelligently removes and reapplies authentication where possible to avoid credential loss.

rebuild_method(prepared_request, response)

When being redirected we may want to change the method of the request based on certain specs or browser behavior.

rebuild_proxies(prepared_request, proxies)

This method re-evaluates the proxy configuration by considering the environment variables. If we are redirected to a URL covered by NO_PROXY, we strip the proxy configuration. Otherwise, we set missing proxy keys for this URL (in case they were stripped by a previous redirect).

This method also replaces the Proxy-Authorization header where necessary.

Return type

dict

request(method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None)

Constructs a Request, prepares it and sends it. Returns Response object.

Parameters
  • method – method for the new Request object.

  • url – URL for the new Request object.

  • params – (optional) Dictionary or bytes to be sent in the query string for the Request.

  • data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.

  • json – (optional) json to send in the body of the Request.

  • headers – (optional) Dictionary of HTTP Headers to send with the Request.

  • cookies – (optional) Dict or CookieJar object to send with the Request.

  • files – (optional) Dictionary of 'filename': file-like-objects for multipart encoding upload.

  • auth – (optional) Auth tuple or callable to enable Basic/Digest/Custom HTTP Auth.

  • timeout (float or tuple) – (optional) How many seconds to wait for the server to send data before giving up, as a float, or a (connect timeout, read timeout) tuple.

  • allow_redirects (bool) – (optional) Set to True by default.

  • proxies – (optional) Dictionary mapping protocol or protocol and hostname to the URL of the proxy.

  • hooks – (optional) Dictionary mapping hook name to one event or list of events, event must be callable.

  • stream – (optional) whether to immediately download the response content. Defaults to False.

  • verify – (optional) Either a boolean, in which case it controls whether we verify the server’s TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to True. When set to False, requests will accept any TLS certificate presented by the server, and will ignore hostname mismatches and/or expired certificates, which will make your application vulnerable to man-in-the-middle (MitM) attacks. Setting verify to False may be useful during local development or testing.

  • cert – (optional) if String, path to ssl client cert file (.pem). If Tuple, (‘cert’, ‘key’) pair.

Return type

requests.Response

resolve_redirects(resp, req, stream=False, timeout=None, verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs)

Receives a Response. Returns a generator of Responses or Requests.

send(request, **kwargs)

Send a given PreparedRequest.

Return type

requests.Response

should_strip_auth(old_url, new_url)

Decide whether Authorization header should be removed when redirecting

headers

A case-insensitive dictionary of headers to be sent on each Request sent from this Session.

auth

Default Authentication tuple or object to attach to Request.

proxies

Dictionary mapping protocol or protocol and host to the URL of the proxy (e.g. {‘http’: ‘foo.bar:3128’, ‘http://host.name’: ‘foo.bar:4012’}) to be used on each Request.

hooks

Event-handling hooks.

params

Dictionary of querystring data to attach to each Request. The dictionary values may be lists for representing multivalued query parameters.

stream

Stream response content default.

verify

SSL Verification default. Defaults to True, requiring requests to verify the TLS certificate at the remote end. If verify is set to False, requests will accept any TLS certificate presented by the server, and will ignore hostname mismatches and/or expired certificates, which will make your application vulnerable to man-in-the-middle (MitM) attacks. Only set this to False for testing.

cert

SSL client certificate default, if String, path to ssl client cert file (.pem). If Tuple, (‘cert’, ‘key’) pair.

max_redirects

Maximum number of redirects allowed. If the request exceeds this limit, a TooManyRedirects exception is raised. This defaults to requests.models.DEFAULT_REDIRECT_LIMIT, which is 30.

trust_env

Trust environment settings for proxy configuration, default authentication and similar.

cookies

A CookieJar containing all currently outstanding cookies set on this session. By default it is a RequestsCookieJar, but may be any other cookielib.CookieJar compatible object.