如何在WSGI应用程序中重用昂贵的数据?

时间:2018-11-07 12:04:48

标签: matplotlib flask wsgi

我构建了一个WSGI页面,该页面既包含表格数据,又包含来自数据库的同一数据的散点图。 (我正在使用flask和matplotlib,但这没关系)。这将生成两个单独的请求:一个用于HTML页面,一个用于从标记调用的动态生成的图像。由于数据库的运行速度很慢,并且两个请求都需要完全相同的数据,因此我希望仅使用一个SQL查询就可以完成此工作。我想到两种方法:

  1. 在HTML视图功能中查询数据库之后,生成散点图并将其保存在PNG文件中的某个位置。然后将列表数据传递到模板上,并在浏览器请求图像后提供缓存的PNG。

  2. 以某种方式将图像数据嵌入HTML本身,并让浏览器使用Javascript呈现它。

方法1.简单明了,但是当不再需要缓存的图像时,我还需要一种方法来摆脱它们。这很容易变得凌乱。由于该应用程序纯粹是由http请求驱动的,因此我将必须在每个请求中扫描缓存目录,并确定哪个文件足够老而可以删除。或者,我可以让“加载” javascript函数第三次调用我的应用程序以触发图像删除。也许很聪明,但很健壮?

  1. 我不知道该怎么做,更不用说以浏览器兼容的方式了。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我已经在Usenet上使用25年了,但仍然发布问题是几分钟后自己找到答案的最佳方法:

<img src="data:image/png;base64, {{imgdata}}">

并在查看功能中:

return flask.render_template('chart_page.html', imgdata=base64.b64encode(pixbuf))

故事的结尾。没有JavaScript。