- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Django View ,它从外部网站接收部分数据,我使用 urllib2/BeautifulSoup 对其进行解析。
此操作相当昂贵,因此我使用低级缓存 API 将其缓存约 5 分钟。但是,当我去外部站点解析新数据时,每个在缓存数据过期后访问站点的用户都会收到几秒钟的显着延迟。
有没有办法延迟加载新数据,这样用户就不会遇到这种延迟?或者这是不可避免的?
请注意,我在共享托管服务器上,所以请在回答时记住这一点。
编辑:感谢您到目前为止的帮助。但是,我仍然不确定如何使用我将要调用的 python 脚本完成此操作。我做的一个基本测试表明 django 缓存不是全局的。这意味着如果我从外部脚本调用它,它看不到框架中正在进行的缓存数据。有什么建议吗?
另一个编辑: 仔细想想,这可能是因为我仍在使用本地内存缓存。我怀疑如果我将缓存移动到 memcached、DB 等等,这将得到解决。
最佳答案
所以你想安排一些东西定期运行?以一些 CPU 时间为代价,您可以使用 this simple app .
或者,如果可以使用它,cron job每 5 分钟是:
*/5 * * * * /path/to/project/refresh_cache.py
Web 主机提供了不同的设置方式。对于 cPanel,使用 Cron 管理器。对于 Google App Engine,使用 cron.yaml
.对于所有这些,您需要 set up the environment首先在 refresh_cache.py
中。
顺便说一句,响应用户的请求被认为是惰性缓存。这是抢先缓存。并且不要忘记缓存足够长的时间以便重新创建页面!
关于python - Django 缓存 - 可以抢先完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797773/
请查看第 19 章中的 two-in-a-row*? 函数。 我的问题是关于 get-first 辅助函数中的 (leave '())。请注意,(waddle l) 将返回 '() 或一个原子,这表明
请查看第 19 章中的 two-in-a-row*? 函数。 我的问题是关于 get-first 辅助函数中的 (leave '())。请注意,(waddle l) 将返回 '() 或一个原子,这表明
我是一名优秀的程序员,十分优秀!