好的,我知道这不是那么简单。我在settings.py中定义了两个数据库连接:default
和cache
。我正在使用来自DatabaseCache
的{{1}}后端。我定义了数据库路由器,所以我可以为我的模型和缓存使用单独的数据库/模式/表。完美!
现在有时我的缓存数据库不可用,有两种情况:
当数据库崩溃时已经建立了与数据库的连接 - 这很容易 - 我可以使用这个方法:http://code.activestate.com/recipes/576780-timeout-for-nearly-any-callable/并将我的查询包装成这样:
django.core.cache
尚未建立与数据库的连接 - 所以我需要在try:
timelimited(TIMEOUT, self._meta.cache.get, cache_key))
expect TimeLimitExprired:
# live without cache
中包含实际建立数据库连接的部分代码。但是我不知道这样的代码存在于何处以及如何有选择地包装它(即仅包装timelimited
连接,在没有超时的情况下保持cache
连接)
你知道怎么做第2点吗?
请注意,此答案https://stackoverflow.com/a/1084571/940208不正确:
default
没有给出结果,据我所知,cx_Oracle驱动程序不支持此参数。