我有一个 Django 项目,用户可以在其中执行搜索,然后进行数百次 REST API 调用以生成结果。这可能需要 3-10 秒。我想实现一个缓存来存储结果,以提高性能并管理 API 的配额。一些关键要求:
- 结果是长期有效的,可能只需要每 6 个月或更长时间失效一次
- 结果是json
- 这些缓存结果中的数据可用于添加新的应用程序功能并在以后扩展 Django 模型
鉴于这组要求(尤其是最后一个),您认为最佳选择是什么?当第一次进行搜索时,我还在考虑实现 Celery 以分配 API 调用。
正如您所提到的,结果是长期存在的,那么为什么不将结果作为包含 JSON 的文本文件在第一次生成后保存到磁盘呢?
我在一些提取大量数据的 API 调用时遇到了类似的问题。这就是我解决问题的方法:
search=noodles => 838f8d9a[..]a370bbfa6df46b171c02f0c
)838f8d9a[..]a370bbfa6df46b171c02f0c.txt
)
的文件不过有一个小缺点:我通过 Django 提供内容,因为我正在检查一些用户权限。但是您也可以返回静态内容 url!
这是一个简单的解决方案,也很容易实现。至于您的最后一个要求,您可以跟踪每个哈希的命中,以查看最频繁的请求并从那里继续。
希望这对编码有所帮助和快乐!