2

好吧,我知道事情没那么简单。我在我的 settings.py:defaultcache. 我正在使用DatabaseCache来自django.core.cache. 我定义了数据库路由器,因此我可以为我的模型和缓存使用单独的数据库/模式/表。完美的!

现在有时我的缓存数据库不可用,有两种情况:

  1. 数据库崩溃时已经建立了与数据库的连接 - 这很容易 - 我可以使用这个配方: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
    
  2. 尚未建立与数据库的连接 - 所以我需要包含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 驱动程序不支持此参数。

4

0 回答 0