带Peewee的烧瓶仅在重新启动时获取新数据

时间:2018-09-11 23:31:59

标签: python mysql flask peewee

我的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()

它开始工作。

我正在与其他可能遇到同样问题的人分享这个问题。

1 个答案:

答案 0 :(得分:0)

这是Web应用程序的预期行为。 HTTP是一种无状态协议,这意味着您的Web应用程序的前端除非发出新请求,否则无法知道后端的状态是否已更改。因此,只有在重新启动Flask应用后,您的后端更改才可见。根据您的代码,您可能还可以通过刷新浏览器来查看更改。

如果要立即查看更改而无需重新启动/刷新,请学习如何使用Javascript查询更改并更新前端DOM。您可以通过学习jquery或类似React / Vue / Angular的现代框架来开始学习。