我的Flask + Peewee应用程序面临一个非常奇怪的问题。
我有一个将数据插入MySQL数据库的webapp。
我的Flask应用程序也通过peewee连接到该数据库。
问题是,当我在web应用程序中插入内容时,如果我对Flask应用程序中的数据库进行选择,则会返回Flask应用程序启动时可用的数据。使用相同的选择获取新数据我需要重新启动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()
它开始工作。
我正在与其他可能遇到同样问题的人分享这个问题。
答案 0 :(得分:0)
这是Web应用程序的预期行为。 HTTP是一种无状态协议,这意味着您的Web应用程序的前端除非发出新请求,否则无法知道后端的状态是否已更改。因此,只有在重新启动Flask应用后,您的后端更改才可见。根据您的代码,您可能还可以通过刷新浏览器来查看更改。
如果要立即查看更改而无需重新启动/刷新,请学习如何使用Javascript查询更改并更新前端DOM。您可以通过学习jquery或类似React / Vue / Angular的现代框架来开始学习。