预防烧瓶

时间:2020-09-05 04:46:22

标签: python flask caching

我正在基于以下条件的flask网站上工作:

  • nginx作为网络服务器
  • 独角兽作为WSGi烧瓶,
  • 主管作为Gunicorn的流程经理,
  • 以烧瓶为网络框架,
  • mysql和sqlalchemy作为数据库层。

我制作了一个简单的页面,该页面加载了驻留在数据库中的json,并对其进行渲染以生成网页。到目前为止,没有什么复杂的。 我遇到的问题是,此网页已缓存并且我正在提供相同的内容,而无论json是否更改。

我的页面具有防止缓存的元标题,因此它不是浏览器。 我在nginx上配置了虚拟主机以防止缓存。 我在SqlAlchemy上用expire_all()标记了该会话,以避免在数据库层上进行缓存。

所以...我假设Flask正在缓存我的内容。问题是我已经将我的flask应用程序配置为防止缓存,但是它似乎不起作用。

有人有同样的问题吗?

谢谢。

nginx: no cache

add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
if_modified_since off;
expires off;
etag off;

Flask应用程序:

from flask_caching import Cache
app = Flask(__name__)
app.debug = False
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
app.config['CACHE_TYPE'] = 'null'
cache = Cache(app)

1 个答案:

答案 0 :(得分:0)

我终于可以解决问题了,

1首先,防止工作人员捕获内容: --max-requests = 1 2实施gevent,以使系统每秒接受更多请求,因为禁用了缓存的内容, 每个数据库最多增加3个sqlalchemy最大连接数。因为每次需要eah请求时都会查询数据内容