我正在使用Rails.cache来缓存来自API的响应:
Rails.cache.fetch("key") do
api.get "/api/data"
api.body
end
API不太可靠,偶尔会出现500错误。我想避免缓存500个响应。
Rails.cache.fetch("key") do
api.get "/api/data"
if api.body.meta.status == 500
# Bail out, Goose!
end
api.body
end
我宁愿不提出例外。在没有缓存的情况下“摆脱困境”的最佳方法是什么?
我自己碰到了这个break
问题,看来可以解决我们的问题。我只是针对memory_store和dalli_store在本地进行了测试,它避免了缓存块。因此,对于您的示例,请尝试以下操作:
Rails.cache.fetch("key") do
api.get "/api/data"
break if api.body.meta.status == 500
api.body
end
附带说明一下,如果使用dalli_store,它将不会缓存nil值,因此您只需从该块中返回nil。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句