如何避免每次都在烧瓶中获取数据

时间:2020-06-10 08:02:12

标签: python-3.x oop flask global-variables

嗨,我有一个遵循以下路线的Python Flask项目。

@app.route("/results")
def fetch_results():
    today = date.today()
    cursor = mysql.connection.cursor()
    results = cursor.execute(f'select * from table where date >= {today} - INTERVAL 7 DAY
                              AND date < {today} ')
    if results <= 0:
        return None
    data = cursor.fetchall()
    return render_template("index.html", data = data)

我还有另一个功能,它在每个星期日发送包含index.html内容的邮件 现在,我希望index.html显示在接下来的7天中通过邮件发送的结果,直到发送新邮件为止。每当调用“ / results”时,都不应获取数据。如何不使用全局变量来做到这一点?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找具有缓存的Redis(内存数据库)

redis使此函数的返回值保持活动状态,并且缓存将阻止刷新这些值一段时间(您可以将其设置为1周)

但是,您也可以通过代码来确定“最近的星期日”的日期,并每次都使用该日期而不是“今天”。

因此,当用户在星期五(第12天)检查路线时,查询仍将检查上一个星期日(第7天)的结果

这是有关获取一周中最近一天的相关问题 get the last sunday and saturday's date in python

我建议您执行此操作,而不要使用来自其他路由或复杂缓存的全局变量,因为这不是它的主要用例,如果缓存刷新超过7天(结果将开始漂移),它将导致不匹配