Python 在烧瓶应用程序中重新加载泡菜
我正在尝试为Flask应用程序提供服务,并希望在特定时间窗口(例如每天上午9点)重新加载pickle文件。我曾尝试在我的flask应用程序的末尾添加一个带有时间计数器的while循环,但最终挂起了我的应用程序。目前设置为Python 在烧瓶应用程序中重新加载泡菜,python,flask,Python,Flask,我正在尝试为Flask应用程序提供服务,并希望在特定时间窗口(例如每天上午9点)重新加载pickle文件。我曾尝试在我的flask应用程序的末尾添加一个带有时间计数器的while循环,但最终挂起了我的应用程序。目前设置为 # main.wsgi from main import app as application # main.py data = pickle.load("/path/to/pickle.file") @app.route("/") def func(): retur
# main.wsgi
from main import app as application
# main.py
data = pickle.load("/path/to/pickle.file")
@app.route("/")
def func():
return render_template("base.html", data_to_serve = data)
# Can I write something here to reload the data at specific time points?
如果要在特定时间点重新加载数据,则有2个选项:
我假设这里的目标是做我所谓的“穷人的缓存”。理想情况下,您可以选择使用pymemcache和Flask的cache-utils之类的东西,但下面的代码片段将实现您想要的功能。如果每次都想重新加载pickle,可以重构它;我想这有点违背了目的 另外,请注意,我使用了一段时间来返回pickle数据;上午九时至下午十二时。您还可以执行类似于if
now.time()==time(hour=9)
的操作来完成您想要的任务
import pickle
from datetime import datetime, time
cached_data = pickle.load("/path/to/pickle.file")
START_TIME = time(hour=9)
END_TIME = time(hour=12) # Can also use something like timedelta
def in_range():
now = datetime.now()
if START_TIME <= now.time() <= END_TIME:
return True
return False
app.route("/")
def func():
if in_range():
return render_template("base.html", data_to_serve = cached_data)
# else do normal business
data = 'compute new data...'
return render_template("base.html", data_to_serve = data)
导入pickle
从日期时间导入日期时间,时间
cached_data=pickle.load(“/path/to/pickle.file”)
开始时间=时间(小时=9)
END_TIME=TIME(hour=12)#也可以使用类似timedelta的东西
def在_范围内():
now=datetime.now()
如果START_TIME这是一个非常简洁的解决方案:)公平地说,我最终确实找到了这个()加上cron作业,更接近我想要的,因为我无论如何都会设置cron作业来进行数据更新。不过,我会记住这一点,非常感谢!