我正在使用flask_缓存来缓存我的flask API的响应。我在这样的路线上使用装饰器
import random
class Status(Resource):
@cache.memoize(timeout=60) # cache for a minute
def post(self):
return random.randint(0, 5)
它将在一分钟内返回相同的随机数。但是,如果随机函数(读取:“路由内的任何功能”)中断,路由返回500个内部服务器错误,该怎么办?据我所知,flask_缓存将缓存这个,并在一分钟内返回所有后续调用的错误响应,这不是我想要的
我读了这篇文章,找到了response_filter参数,它可以很容易地添加到decorator中,似乎是为了防止这种情况发生(“有助于防止缓存代码500响应”)
@cache.memoize(timeout=60, response_filter=callable_check_for_500(???))
然而,我找不到这个用例的例子。它说“如果callable返回False,内容将不会被缓存。”-如何实现这个callable来检查状态代码是否为500?任何链接或想法感谢
我想出了“解决办法”,但我并不完全满意
基本上,check_500()函数在默认情况下获取参数resp,但它不是完整响应对象,不幸的是,它缺少status_code属性,正如我所预期的那样
状态代码本身就在数据中,我只是查看响应的最后一个条目,即返回的所有数据。在我的例子中,返回的json为[0],状态代码为[-1]
目前的执行情况如下:
使用上面定义的可调用check_500函数
这与评论中建议的高于c_水平非常相似,因此非常感谢,但是我建议查看响应的最后一个索引,而不是检查响应数据中是否有500。这似乎仍然有点不可靠,如果有人有更详细的想法,请随时发布另一个答案
相关问题 更多 >
编程相关推荐