Skip to content

Commit 13a09dd

Browse files
committed
tweaks
1 parent d266988 commit 13a09dd

12 files changed

Lines changed: 44 additions & 28 deletions

livekit-api/livekit/api/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
from .twirp_client import TwirpError, TwirpErrorCode
4040
from .livekit_api import LiveKitAPI
41-
from ._failover import FailoverConfig
41+
from ._failover import FailoverOptions
4242
from .access_token import (
4343
InferenceGrants,
4444
ObservabilityGrants,
@@ -67,5 +67,5 @@
6767
"WebhookReceiver",
6868
"TwirpError",
6969
"TwirpErrorCode",
70-
"FailoverConfig",
70+
"FailoverOptions",
7171
]

livekit-api/livekit/api/_failover.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
_DEFAULT_BACKOFF_BASE = 0.2
3434

3535

36-
class FailoverConfig(TypedDict, total=False):
36+
class FailoverOptions(TypedDict, total=False):
3737
"""Region-failover tuning, passed as the ``failover`` argument. Use it as a
3838
plain dict, e.g. ``failover={"max_attempts": 5}``. All keys are optional.
3939
@@ -49,7 +49,7 @@ class FailoverConfig(TypedDict, total=False):
4949
backoff_base: float
5050

5151

52-
def failover_attempts(failover: Optional[FailoverConfig], host: Optional[str]) -> int:
52+
def failover_attempts(failover: Optional[FailoverOptions], host: Optional[str]) -> int:
5353
"""Total request attempts including the initial one; 1 means no failover.
5454
5555
With no config (``None``) failover is enabled only for LiveKit Cloud hosts.
@@ -60,7 +60,7 @@ def failover_attempts(failover: Optional[FailoverConfig], host: Optional[str]) -
6060
return max(1, failover.get("max_attempts", _DEFAULT_MAX_ATTEMPTS))
6161

6262

63-
def failover_backoff_base(failover: Optional[FailoverConfig]) -> float:
63+
def failover_backoff_base(failover: Optional[FailoverOptions]) -> float:
6464
return (failover or {}).get("backoff_base", _DEFAULT_BACKOFF_BASE)
6565

6666

@@ -143,7 +143,13 @@ async def _fetch(
143143
fetch_headers = {
144144
k: v for k, v in headers.items() if k.lower() not in ("content-type", "content-length")
145145
}
146-
async with session.get(f"{origin}/settings/regions", headers=fetch_headers) as resp:
146+
# Short timeout so a slow/unreachable discovery endpoint doesn't stall
147+
# the failover path.
148+
async with session.get(
149+
f"{origin}/settings/regions",
150+
headers=fetch_headers,
151+
timeout=aiohttp.ClientTimeout(total=2),
152+
) as resp:
147153
if resp.status != 200:
148154
raise RuntimeError(f"region discovery failed: {resp.status}")
149155
ttl = _parse_max_age(resp.headers.get("Cache-Control"))

livekit-api/livekit/api/_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import aiohttp
44
from abc import ABC
55
from .twirp_client import TwirpClient
6-
from ._failover import FailoverConfig
6+
from ._failover import FailoverOptions
77
from typing import Optional
88
from .access_token import AccessToken, VideoGrants, SIPGrants
99

@@ -17,7 +17,7 @@ def __init__(
1717
host: str,
1818
api_key: str,
1919
api_secret: str,
20-
failover: Optional[FailoverConfig] = None,
20+
failover: Optional[FailoverOptions] = None,
2121
):
2222
self._client = TwirpClient(session, host, "livekit", failover=failover)
2323
self.api_key = api_key

livekit-api/livekit/api/agent_dispatch_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
ListAgentDispatchResponse,
99
)
1010
from ._service import Service
11-
from ._failover import FailoverConfig
11+
from ._failover import FailoverOptions
1212
from .access_token import VideoGrants
1313

1414
SVC = "AgentDispatchService"
@@ -33,7 +33,7 @@ def __init__(
3333
url: str,
3434
api_key: str,
3535
api_secret: str,
36-
failover: Optional[FailoverConfig] = None,
36+
failover: Optional[FailoverOptions] = None,
3737
):
3838
super().__init__(session, url, api_key, api_secret, failover=failover)
3939

livekit-api/livekit/api/connector_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
ConnectTwilioCallResponse,
1818
)
1919
from ._service import Service
20-
from ._failover import FailoverConfig
20+
from ._failover import FailoverOptions
2121
from typing import Optional
2222
from .access_token import VideoGrants
2323

@@ -43,7 +43,7 @@ def __init__(
4343
url: str,
4444
api_key: str,
4545
api_secret: str,
46-
failover: Optional[FailoverConfig] = None,
46+
failover: Optional[FailoverOptions] = None,
4747
):
4848
super().__init__(session, url, api_key, api_secret, failover=failover)
4949

livekit-api/livekit/api/egress_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
ListEgressResponse,
1414
)
1515
from ._service import Service
16-
from ._failover import FailoverConfig
16+
from ._failover import FailoverOptions
1717
from typing import Optional
1818
from .access_token import VideoGrants
1919

@@ -41,7 +41,7 @@ def __init__(
4141
url: str,
4242
api_key: str,
4343
api_secret: str,
44-
failover: Optional[FailoverConfig] = None,
44+
failover: Optional[FailoverOptions] = None,
4545
):
4646
super().__init__(session, url, api_key, api_secret, failover=failover)
4747

livekit-api/livekit/api/ingress_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
ListIngressResponse,
99
)
1010
from ._service import Service
11-
from ._failover import FailoverConfig
11+
from ._failover import FailoverOptions
1212
from typing import Optional
1313
from .access_token import VideoGrants
1414

@@ -36,7 +36,7 @@ def __init__(
3636
url: str,
3737
api_key: str,
3838
api_secret: str,
39-
failover: Optional[FailoverConfig] = None,
39+
failover: Optional[FailoverOptions] = None,
4040
):
4141
super().__init__(session, url, api_key, api_secret, failover=failover)
4242

livekit-api/livekit/api/livekit_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from .sip_service import SipService
77
from .agent_dispatch_service import AgentDispatchService
88
from .connector_service import ConnectorService
9-
from ._failover import FailoverConfig
9+
from ._failover import FailoverOptions
1010
from typing import Any, Optional
1111

1212

@@ -32,7 +32,7 @@ def __init__(
3232
*,
3333
timeout: Optional[aiohttp.ClientTimeout] = None,
3434
session: Optional[aiohttp.ClientSession] = None,
35-
failover: Optional[FailoverConfig] = None,
35+
failover: Optional[FailoverOptions] = None,
3636
):
3737
"""Create a new LiveKitAPI instance.
3838

livekit-api/livekit/api/room_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
)
2626
from livekit.protocol.models import Room, ParticipantInfo
2727
from ._service import Service
28-
from ._failover import FailoverConfig
28+
from ._failover import FailoverOptions
2929
from typing import Optional
3030
from .access_token import VideoGrants
3131

@@ -53,7 +53,7 @@ def __init__(
5353
url: str,
5454
api_key: str,
5555
api_secret: str,
56-
failover: Optional[FailoverConfig] = None,
56+
failover: Optional[FailoverOptions] = None,
5757
):
5858
super().__init__(session, url, api_key, api_secret, failover=failover)
5959

livekit-api/livekit/api/sip_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
SIPTransport,
3636
)
3737
from ._service import Service
38-
from ._failover import FailoverConfig
38+
from ._failover import FailoverOptions
3939
from .access_token import VideoGrants, SIPGrants
4040

4141
SVC = "SIP"
@@ -60,7 +60,7 @@ def __init__(
6060
url: str,
6161
api_key: str,
6262
api_secret: str,
63-
failover: Optional[FailoverConfig] = None,
63+
failover: Optional[FailoverOptions] = None,
6464
):
6565
super().__init__(session, url, api_key, api_secret, failover=failover)
6666

0 commit comments

Comments
 (0)