【问题标题】:Apache server seems to be caching requestsApache 服务器似乎正在缓存请求
【发布时间】:2016-08-09 15:06:32
【问题描述】:

我在 Apache 2.4 服务器上运行 Flask 应用程序。该应用程序向同事使用 Requests 库构建的 API 发送请求。请求采用特定格式,由存储在 MySQL 数据库中的数据构成。该站点旨在将 API 的反馈显示在索引上,用户可以通过另一个页面,即编辑页面来编辑存储在 MySQL 数据库中的数据(以及请求中发送的数据)。

例如,假设自定义字段 date 设置为 "2006",我将访问索引页面,发送请求,API 发挥作用并发回与 2006 年相关的数据。如果我然后将日期更改为"2007",然后将新字段保存在 MySQL 中,并在导航回索引时构造、发送新请求并返回 2007 年的数据。

很遗憾,这并没有发生。

当我在编辑页面上更改详细信息时,它们肯定会存储到数据库中,但是当我导航回索引时,请求会发送前一组数据。我认为 Apache 导致问题的原因有两个:

  1. 当我重置服务器 (service apache2 restart) 时,发回的数据是“正确的”数据,即使我没有触及数据库。也就是说,索引最初是请求2006年的数据,我把它改成请求2007年的数据,它仍然请求2006年的数据,我重新启动服务器,刷新索引,只有然后它才像这样请求2007年的数据自从我编辑后就应该这样做了。
  2. 当我在我的本地 Flask 开发服务器上运行它时,在编辑条目后导航到索引页面会立即返回正确的结果 - 它提供相同的数据库并且与部署的服务器基本相同,只是它不是在 apache 上运行.

Apache 有没有办法缓存请求或其他东西?我无法弄清楚为什么服务器会一直发送旧请求,直到我重新启动它。

编辑: 请求本身又大又笨拙,并且响应会返回我不喜欢出于隐私原因提供示例的数据。

我几乎可以肯定 Apache 是问题所在,因为如前所述,Flask 开发服务器在返回正确的数据集方面没有问题。我还写了一些通过 Postman 运行的请求,这些请求也都按请求返回数据,所以请求结构一定没问题。我可以看到本地 Flask 应用程序和已部署应用程序之间的唯一区别是 Apache,并且鉴于重新启动 Apache 服务器会“更新”请求,直到数据再次更改,我认为它显然做了一些不愉快的事情。

【问题讨论】:

标签: apache flask python-requests


【解决方案1】:

Dirn 完全正确,事实证明这根本不是 Apache 问题。一直都是 SQL Alchemy。

我想 SQL Alchemy 知道当它在开发服务器上请求数据时不做任何“缓存”,但认为这是生产中的一个好主意,这真的很有意义。它没有在每次搜索时都使用提交的数据,这就是为什么重新启动 Apache 服务器会修复它,因为它还会重置连接。

我猜这就是“您如何在应用程序中加载数据?”的意思。我以为自从我在开发服务器上关闭了 Flask 的调试后,它的行为就像在部署中一样,但看起来好像有什么东西漏掉了。

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多