Как кэшировать сопрограммы asyncioPython

Программы на Python
Anonymous
Как кэшировать сопрограммы asyncio

Сообщение Anonymous »

Я использую aiohttp для создания простого HTTP-запроса в Python 3.4, например:

Код: Выделить всё

response = yield from aiohttp.get(url)
Приложение запрашивает один и тот же URL-адрес снова и снова, поэтому, естественно, я захотел его кэшировать. Моя первая попытка была примерно такой:

Код: Выделить всё

@functools.lru_cache(maxsize=128)
def cached_request(url):
return aiohttp.get(url)
Первый вызов cached_request работает нормально, но в последующих вызовах я получаю None вместо объекта ответа.

Я довольно новичок в asyncio, поэтому попробовал много комбинаций декоратора asyncio.coroutine, выхода из и некоторых других вещей, но ничего не помогло.

Итак, как же это происходит? кеширующие сопрограммы работают?

Вернуться в «Python»