Python服务器可以跨Apache worker缓存数据库查询吗?

时间:2018-09-05 02:54:40

标签: python apache web.py

我正在尝试加快网站的主页的速度,该网站查询数据库以获取随机URL作为背景图片。我尝试过的一件事是在Python代码中添加一个函数,该函数将数据库查询的结果缓存60分钟,当我在本地运行服务器时,我发现它似乎正常工作:重新加载页面显示的图像与而不是新的随机图片。

但是,当我将此代码部署到运行Apache服务器的Digital Ocean Droplet上时,它似乎没有用:重新加载页面将显示不同的图像。我怀疑正在发生的情况是,不同的工作者每次都在处理我的请求,而这些工作者中的每一个都有来自数据库的自己的缓存结果。

是否有任何方法可以在工作进程之间缓存这些数据库查询或达到类似的结果?注意:对背景图片进行硬编码的明显解决方案不是一种选择,因为我工作的人希望背景图片有所变化。

2 个答案:

答案 0 :(得分:0)

Apache在工作人员之间共享了内存,但是我仍然不知道python(例如uwsgi)如何访问它。与nginx相同。

替代方法是使用一种算法来确定要显示的内容,而不是真正随机的。例如,所有带有hour == 1-> picture_1,hour == 2-> picture_2等的查询。

答案 1 :(得分:0)

更多阅读后,看来此问题的标准解决方案是使用数据库查询缓存系统(例如Memcached或Redis)。