好吧,我知道事情没那么简单。我在我的 settings.py:default
和cache
. 我正在使用DatabaseCache
来自django.core.cache
. 我定义了数据库路由器,因此我可以为我的模型和缓存使用单独的数据库/模式/表。完美的!
现在有时我的缓存数据库不可用,有两种情况:
数据库崩溃时已经建立了与数据库的连接 - 这很容易 - 我可以使用这个配方:http ://code.activestate.com/recipes/576780-timeout-for-nearly-any-callable/并像这样包装我的查询:
try: timelimited(TIMEOUT, self._meta.cache.get, cache_key)) expect TimeLimitExprired: # live without cache
尚未建立与数据库的连接 - 所以我需要包含
timelimited
一些实际建立数据库连接的代码部分。但我不知道这样的代码存在哪里以及如何有选择地包装它(即只包装cache
连接,离开default
连接而不超时)
你知道怎么做第2点吗?
请注意,此答案https://stackoverflow.com/a/1084571/940208不正确:
grep -R "connect_timeout" /usr/local/lib/python2.7/dist-packages/django/db
据我所知,没有给出任何结果,并且 cx_Oracle 驱动程序不支持此参数。