Skip to content

Commit 14b6ce3

Browse files
committed
Add retries to API calls
1 parent 89bb5e9 commit 14b6ce3

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

heroku_scheduled_scaling/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import sentry_sdk
66

77
from .scale import scale_app
8-
from .utils import get_heroku_apps, get_heroku_client
8+
from .utils import get_heroku_apps, requests_session
99

1010

1111
def main() -> None:
@@ -15,7 +15,7 @@ def main() -> None:
1515
apps = get_heroku_apps()
1616

1717
requests_pool_size = (
18-
get_heroku_client()._session.adapters["https://"]._pool_connections # type: ignore[attr-defined]
18+
requests_session.adapters["https://"]._pool_connections # type: ignore[attr-defined]
1919
)
2020

2121
with concurrent.futures.ThreadPoolExecutor(

heroku_scheduled_scaling/utils.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,19 @@
44
from typing import Iterable
55

66
import heroku3
7+
import requests
8+
import requests.adapters
79
from heroku3.models.app import App
810

11+
requests_retry = requests.adapters.Retry(total=3, backoff_factor=0.1)
12+
requests_session = requests.Session()
13+
requests_session.mount(
14+
"https://", requests.adapters.HTTPAdapter(max_retries=requests_retry)
15+
)
16+
requests_session.mount(
17+
"http://", requests.adapters.HTTPAdapter(max_retries=requests_retry)
18+
)
19+
920

1021
def get_apps_for_teams(heroku: heroku3.core.Heroku, teams: list[str]) -> Iterable[App]:
1122
for team in teams:
@@ -15,7 +26,7 @@ def get_apps_for_teams(heroku: heroku3.core.Heroku, teams: list[str]) -> Iterabl
1526

1627

1728
def get_heroku_client() -> heroku3.core.Heroku:
18-
return heroku3.from_key(os.environ["HEROKU_API_KEY"])
29+
return heroku3.from_key(os.environ["HEROKU_API_KEY"], session=requests_session)
1930

2031

2132
def get_heroku_apps() -> list[App]:

stubs/heroku3/__init__.pyi

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from requests import Session
2+
13
from .core import Heroku
24

3-
def from_key(api_key: str) -> Heroku: ...
5+
def from_key(api_key: str, session: Session) -> Heroku: ...

0 commit comments

Comments
 (0)