我的 Flask + Peewee 应用程序遇到了一个非常奇怪的问题。
我有一个将数据插入 MySQL 数据库的网络应用程序。
我的 Flask 应用程序还通过 peewee 连接到该数据库。
问题是,当我使用 web 应用程序插入某些内容时,如果我在 Flask 应用程序中对数据库进行选择,它将返回 Flask 应用程序启动时可用的数据。获取新数据使用相同的选择,我需要重新启动 Flask 服务器服务才能获取新数据。
有谁知道发生了什么吗?
更新
我发现了这个问题。它与 peewee 没有直接关系,而是与 Flask 相关。
我有这样的东西:
def some_method(id, user_id, date_from = datetime.now(), limit = 50):
似乎当我这样做时,date_from 是用编译的日期时间设置的。之后,所有使用它的请求都将始终使用该日期时间。
改为:
def some_method(id, user_id, date_from = None, limit = 50):
if (date_from is None):
date_from = datetime.now()
它开始工作。
我正在与像我一样可能遇到同样问题的其他人分享此内容。
最佳答案
这是 Web 应用程序的预期行为。 HTTP 是一种无状态协议(protocol),这意味着您的 Web 应用程序的前端无法知道后端的状态是否已更改,除非它发出新的请求。因此,只有重新启动 Flask 应用程序后,您的后端更改才可见。根据您的代码,您可能还可以通过刷新浏览器看到更改。
如果您想立即看到更改而不需要重新启动/刷新,请了解如何使用 Javascript 查询更改并更新前端 DOM。您可以从学习 jquery 或 React/Vue/Angular 等现代框架开始。
关于python - Peewee 的 Flask 仅在重新启动时获取新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285458/