Python Функция запроса кеша мензурки приводит к условию - PullRequest
0 голосов
/ 21 февраля 2020

Давайте предположим, что я кэширую результат функции с помощью стакана, используя функцию декоратора. Результат функции, который должен быть кэширован, генерируется запросом http. Теперь проблема заключается в том, что сервер, который возвращает ответ, довольно капризный и иногда только возвращает сообщение об ошибке, либо время ожидания истекает из-за установленного времени ожидания.

Как я могу кэшировать функцию, только если сервер вернул верный ответ за определенное время c?

Это пример кода:

import time
import requests

from beaker.cache import CacheManager
from beaker.util import parse_cache_config_options

cache_opts = {
    'cache.type': 'file',
    'cache.data_dir': '/tmp/cache/data',
    'cache.lock_dir': '/tmp/cache/lock'
}

cache = CacheManager(**parse_cache_config_options(cache_opts))

@cache.cache('my_search_func', expire=3600)
def get_results():
    response = requests.request("GET", url, headers=headers, params=querystring, timeout=300)
    resp = response.json()
    if "DataFeed" not in resp.keys():
        return resp
    resp["DataFeed"][0]["Requests"] = response.url
    del resp["DataFeed"][0]["Columns"]
    return resp

start = time.time()
results=get_results()
end=time.time()
print(results)
print(end-start)

url, headers и querystring, конечно, не определены в примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...