Created
April 4, 2017 13:03
-
-
Save cfclrk/51ea85ff13cf55748188aba57125949e to your computer and use it in GitHub Desktop.
botocore waiter with aiobotocore (does not work)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import asyncio | |
import aiobotocore | |
cloudformation_template = """ | |
{ | |
"AWSTemplateFormatVersion": "2010-09-09", | |
"Resources": { | |
"queue1": { | |
"Type": "AWS::SQS::Queue", | |
"Properties": { | |
"QueueName": "my-queue" | |
} | |
} | |
} | |
} | |
""" | |
loop = asyncio.get_event_loop() | |
session = aiobotocore.get_session(loop=loop) | |
cloudformation_client = session.create_client('cloudformation', region_name='us-east-1') | |
async def create_stack(): | |
print('creating cloudformation stack') | |
await cloudformation_client.create_stack( | |
StackName='my-stack', TemplateBody=cloudformation_template) | |
async def wait_for_stack_create_complete(): | |
print('waiting for cloudformation stack creation to complete') | |
waiter = cloudformation_client.get_waiter('stack_create_complete') | |
await waiter.wait(StackName='my-stack') | |
loop.run_until_complete(create_stack()) | |
loop.run_until_complete(wait_for_stack_create_complete()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> python aiobotocore_waiter.py | |
creating cloudformation stack | |
waiting for cloudformation stack creation to complete | |
Traceback (most recent call last): | |
File "aiobotocore_waiter.py", line 36, in <module> | |
loop.run_until_complete(wait_for_stack_create_complete()) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/asyncio/base_events.py", line 466, in run_until_complete | |
return future.result() | |
File "aiobotocore_waiter.py", line 32, in wait_for_stack_create_complete | |
await waiter.wait(StackName='my-stack') | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/waiter.py", line 53, in wait | |
Waiter.wait(self, **kwargs) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/waiter.py", line 298, in wait | |
if acceptor.matcher_func(response): | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/waiter.py", line 204, in acceptor_matches | |
if 'Error' in response: | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiobotocore/client.py", line 78, in _make_api_call | |
operation_model, request_dict) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiobotocore/endpoint.py", line 214, in _send_request | |
exception)): | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiobotocore/endpoint.py", line 246, in _needs_retry | |
caught_exception=caught_exception, request_dict=request_dict) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/hooks.py", line 227, in emit | |
return self._emit(event_name, kwargs) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/hooks.py", line 210, in _emit | |
response = handler(**kwargs) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/retryhandler.py", line 183, in __call__ | |
if self._checker(attempts, response, caught_exception): | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/retryhandler.py", line 251, in __call__ | |
caught_exception) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/retryhandler.py", line 269, in _should_retry | |
return self._checker(attempt_number, response, caught_exception) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/retryhandler.py", line 317, in __call__ | |
caught_exception) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/retryhandler.py", line 223, in __call__ | |
attempt_number, caught_exception) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/botocore/retryhandler.py", line 359, in _check_caught_exception | |
raise caught_exception | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiobotocore/endpoint.py", line 270, in _get_response | |
request.method, request.url, request.headers, request.body) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiobotocore/endpoint.py", line 203, in _request | |
allow_redirects=False) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiohttp/client.py", line 585, in __iter__ | |
resp = yield from self._coro | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiohttp/client.py", line 222, in _request | |
yield from resp.start(conn, read_until_eof) | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiohttp/client_reqrep.py", line 615, in start | |
message = yield from httpstream.read() | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiohttp/streams.py", line 625, in read | |
result = yield from super().read() | |
File "/Users/chrisc/.pyenv/versions/3.6.0/lib/python3.6/site-packages/aiohttp/streams.py", line 456, in read | |
yield from self._waiter | |
AssertionError: yield from wasn't used with future | |
Unclosed client session | |
client_session: <aiohttp.client.ClientSession object at 0x109f18ef0> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment