3

なぜこれがうまくいかないのですか:

try:
    async with asyncio.wait_for(aiohttp.get(url), 2) as resp:
        print(resp.text())
except asyncio.TimeoutError as e:
    pass

与える

async with asyncio.wait_for(aiohttp.get(url), 2) as resp:
AttributeError: __aexit__

私の理解では、 andメソッドを持つasyncio.wait_for()の未来を渡します(動作するという事実によって示されているように)。aiohttp.get()__aenter____aexit__async with aiohttp.get()

4

1 に答える 1

5

書くことはできませんasync with wait_for(...)--wait_forは非同期コンテキスト マネージャーをサポートしていません。

すぐにTimeoutクラスを追加します-- https://groups.google.com/forum/#!topic/python-tulip/aRc3VBIXyRc会話を参照してください。asyncio

今のところ、試すことができますaiohttp.Timeout(ただし、十分な量のパッケージをインストールする必要があります) -- または、これらの 40 行のコードをコピーするだけです。

興味深いことに、このアプローチは必要ありません。async with古き良きwithものだけで十分です。

UPDすでに aiohttp を使用していることを見逃していました。したがって、aiohttp タイムアウトの章の 2 番目の例に従ってください。

于 2016-01-09T13:42:03.973 に答える