flask кеширует страницу

Всем доброго времени суток. Проблема в том что есть сервис который по запросу лезет в базу - достает инфу - формирует датафреймы и потом выгружает все в эксель формате.

def get_status_info():
    """
    :return: {'status1' : count, ...}
    """
    result = dict()
    sql = text(query_for_statuses)
    query = db.engine.execute(sql)

    for row in query.fetchall():
        result[row[0]] = row[1]

    return result


def get_cnt_expected_doc():
    """
    :return: int
    """
    sql = text(count_expected_doc)
    query = db.engine.execute(sql)
    res = query.fetchone()[0]

    return res

Все хорошо работает но именно по этому запросу сервис отдает актуальную информацию только первый раз, потом при след запросу берет от куда то из кеша файл и кидает его повторно (данные не подтягиваются снова из базы), более того в логе даже не видно что запрос пришел. При этом никакие настройки для кеширования я не выставлял и остальные запросы отрабатывают каждый раз при обращении.

@reports_api.route('/reports/queue_statuses', methods=['GET'])
def queue_statuses():
    file = report_queue_statuses()

    return send_from_directory(BaseConfig.LOAD_FOLDER, file, mimetype='application/vnd.ms-excel', as_attachment=True)

В чем может быть причина?


Ответы (1 шт):

Автор решения: alex just
response = send_from_directory(BaseConfig.LOAD_FOLDER, file, mimetype='application/vnd.ms-excel',
                                   as_attachment=True)
response.headers["Cache-Control"] = "no-store, no-cache, must-revalidate"
return response

исправил настройку кэша ответа и проблема решилась.

→ Ссылка