0

我在 Python 项目中使用 dogpile.cache,并带有基于 pylibmc 的后端。创建区域后,我使用以下内容:

@region.cache_on_arguments()
def run_some_query(**kwargs):
    # ... Query code ...
    return query_results

我的问题是,装饰器提出了某些例外,我只想忽略这些例外。例如,如果 memcached 不可用,或者结果太大。

有没有办法在不滚动我自己的自定义装饰器的情况下实现这一目标?如果我必须创建一个自定义装饰器,有什么好方法可以实现。

4

2 回答 2

0

装饰器只是功能。所以你需要改变功能。Python 无法禁用现有函数中的异常。

您可以继承发生此异常处理的类并覆盖此方法。

除了,有一种方法,但它涉及跟踪,你需要小心。

于 2019-06-13T09:21:58.763 回答
0

我已经设法解决了这个问题。事实证明,解决方案毕竟在 dogpile.cache 文档中,我错过了它。该解决方案可以在文档中的更改后端行为部分中找到。这个想法很简单:按照文档中的描述创建一个代理后端,然后在配置区域时使用 wrap 参数以包含此代理后端。

于 2019-09-29T10:53:01.333 回答