我在Flask微框架中编写了一个简单的应用程序。主页如下:
@app.route("/")
def index():
# ...
# connect to the database
# execute a query
# retrieve a data
# ...
return render_template('index.html', out=data_from_the_database)
上面的函数生成一个包含Oracle数据库数据的网页。问题是复杂的,长时间查询,数据库上的执行时间大约需要10-15分钟,服务器上的CPU时间几乎是100%。
我有一个想法来解决这个问题:
cURL
工具我要打开主页,pickle
模块将数据保存到文件中,我的主要问题是如何实现以下两个假设:
请给我一些提示,想法(或代码)如何实现这一目标?
答案 0 :(得分:1)
您可以使用POST(通过表单)调用“REFRESH”部分。如下所示:
@app.route("/", methods=['GET','POST'])
def index():
if request.method == 'POST':
# pull data from database
# update the data file. If does not exist, then create it first time
# Now, retrieve the data from the data file. This will always be called even with GET request
data = <data from file>
# Return the data back to the client.
return render_template('index.html', out=data)
在上面的代码中,您将使用POST执行2个额外步骤。第1步将从数据库中提取数据,第2步将更新您拥有的数据文件。如果数据文件尚不存在,则应在该步骤中创建。休息将是一样的。
在index.html
或模板中,只需确保您拥有以下表单:
<form action= {{url_for('index')}} method='POST'>
<input type='submit' value="REFRESH'>
</form>
.....