「と非同期」aiohttpのStartedドキュメントが次のクライアント例与える行き方:はPython 3.4で
import asyncio
import aiohttp
async def fetch_page(session, url):
with aiohttp.Timeout(10):
async with session.get(url) as response:
assert response.status == 200
return await response.read()
loop = asyncio.get_event_loop()
with aiohttp.ClientSession(loop=loop) as session:
content = loop.run_until_complete(
fetch_page(session, 'http://python.org'))
print(content)
をそして、彼らは、Python 3.4のユーザーのために、以下の注意事項与える:あなたが使用している場合は
をPython 3.4では、awaitをfromとyieldを、そして、 async defを@coroutineデコレータで置き換えてください。
import aiohttp import asyncio @asyncio.coroutine def fetch(session, url): with aiohttp.Timeout(10): async with session.get(url) as response: return (yield from response.text()) if __name__ == '__main__': loop = asyncio.get_event_loop() with aiohttp.ClientSession(loop=loop) as session: html = loop.run_until_complete( fetch(session, 'http://python.org')) print(html)
async with
はPython 3.4でサポートされていないので、しかし、これは、実行されません:$ python3 client.py File "client.py", line 7 async with session.get(url) as response: ^ SyntaxError: invalid syntax
どのように私は
async with
を翻訳することができ、私は私が得るこれらの指示に従った場合
Python 3.4で動作する文?
これらの例を教えていただきありがとうございます。私はそれらを見つけていなかった。 – Imran
例外が発生した場合は、通常、応答を*閉じる*してください。 –
@MartijnPietersありがとう、そうです。私は '_RequestContextManager .__ aexit__'ロジックにマッチするようにコードを修正しました。 –