Python 在Django中,如何设置数据库连接超时?
好吧,我知道事情没那么简单。我在设置中定义了两个db连接。py:Python 在Django中,如何设置数据库连接超时?,python,database,django,caching,django-cache,Python,Database,Django,Caching,Django Cache,好吧,我知道事情没那么简单。我在设置中定义了两个db连接。py:default和cache。我正在使用django.core.cache中的DatabaseCache后端。我已经定义了数据库路由器,所以我可以为我的模型和缓存使用单独的数据库/模式/表。太好了 现在,有时我的缓存数据库不可用,有两种情况: 数据库崩溃时已建立到数据库的连接-这很容易-我可以使用以下方法:并将我的查询包装为: try: timelimited(TIMEOUT, self._meta.cache.get, ca
default
和cache
。我正在使用django.core.cache
中的DatabaseCache
后端。我已经定义了数据库路由器,所以我可以为我的模型和缓存使用单独的数据库/模式/表。太好了
现在,有时我的缓存数据库不可用,有两种情况:
try:
timelimited(TIMEOUT, self._meta.cache.get, cache_key))
expect TimeLimitExprired:
# live without cache
timelimited
中包含实际建立数据库连接的部分代码。但我不知道这种代码存在于何处,也不知道如何有选择地包装它(即只包装缓存
连接,保留默认
连接而不超时)grep -R "connect_timeout" /usr/local/lib/python2.7/dist-packages/django/db
没有结果,据我所知,cx_Oracle驱动程序不支持此参数。您是否使用Oracle作为db?@MattWriteCode-如果您没有注意到,我在问题中包含此链接,表示这根本不正确。请注意,
Oracle/base.py
不要修改连接设置(它只删除use\u returning\u into
afair),就像其他后端一样,所以grep
的结果是可预测的,但是connect\u timeout
将作为arg传递给数据库。connect
@alko-是的,我知道,但在cx\u Oracle文档中没有提到timeout参数(严格地说,它是在池对象中,但意义完全不同)。Oracle的理念是在服务器上设置超时,而不是在客户端设置超时,因此没有可以定义超时的客户端配置。