Как кэшировать сопрограммы 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, выхода из и некоторых других вещей, но ничего не помогло.

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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