Skip to content

Commit 726bb38

Browse files
committed
Support warm-up of loader caches
1 parent 41e938e commit 726bb38

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

aiobotocore/session.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import asyncio
2+
from typing import Optional
3+
14
from botocore import UNSIGNED, translate
25
from botocore import __version__ as botocore_version
36
from botocore.context import get_context
@@ -126,6 +129,36 @@ async def get_service_data(self, service_name, api_version=None):
126129
)
127130
return service_data
128131

132+
def warm_up_loader_caches(
133+
self,
134+
service_name: str,
135+
api_version: Optional[str] = None,
136+
):
137+
loader = self.get_component('data_loader')
138+
139+
# from session.py
140+
loader.load_data_with_path('endpoints')
141+
loader.load_data('sdk-default-configuration')
142+
loader.load_service_model(service_name, 'waiters-2', api_version)
143+
loader.load_service_model(service_name, 'paginators-1', api_version)
144+
loader.load_service_model(
145+
service_name, type_name='service-2', api_version=api_version
146+
)
147+
loader.list_available_services(type_name='service-2')
148+
149+
# from client.py
150+
loader.load_data('partitions')
151+
loader.load_service_model(
152+
service_name, 'service-2', api_version=api_version
153+
)
154+
loader.load_service_model(
155+
service_name, 'endpoint-rule-set-1', api_version=api_version
156+
)
157+
loader.load_data('_retry')
158+
159+
# from docs/service.py
160+
loader.load_service_model(service_name, 'examples-1', api_version)
161+
129162
def create_client(self, *args, **kwargs):
130163
return ClientCreatorContext(self._create_client(*args, **kwargs))
131164

@@ -167,6 +200,13 @@ async def _create_client(
167200
)
168201

169202
loader = self.get_component('data_loader')
203+
204+
# TODO: implement config flag
205+
if getattr(config, 'auto_warm_up_loader_caches'):
206+
await asyncio.to_thread(
207+
self.warm_up_loader_caches, service_name, api_version
208+
)
209+
170210
event_emitter = self.get_component('event_emitter')
171211
response_parser_factory = self.get_component('response_parser_factory')
172212
if config is not None and config.signature_version is UNSIGNED:

0 commit comments

Comments
 (0)