在django-mssql执行自定义SQL时,查询超时已过期

3

我正在查询一个视图,它会返回大量数据,并且需要超过1分钟才能完成。

我使用django.db.connection.cursor()执行查询,因为这不是我的默认数据库。30秒后,我收到一个异常“查询超时”。我认为30秒是django-mssql的默认超时时间。有没有办法增加超时时间或者其他方法可以解决问题。

不能修改SQL查询,因为它已经由另一方实现。只有一个视图是公开的。

str(Exception) 是“(-2147352567, '发生异常。', (0, u'Microsoft OLE DB Provider for SQL Server', u'查询超时。', None, 0, -2147217871), None)”

1个回答

6
您可以在数据库配置中的Django设置文件中调整COMMAND_TIMEOUT。以下是使用COMMAND_TIMEOUT的示例:
DATABASES = {
'default': {
    'NAME': DATABASE_NAME,
    'ENGINE': 'sqlserver_ado',
    'HOST': DATABASE_HOST,
    'USER': DATABASE_USER,
    'PASSWORD': DATABASE_PASSWORD,
    'COMMAND_TIMEOUT': DATABASE_COMMAND_TIMEOUT,
   }
}

谢谢,它起作用了。 DATABASE_COMMAND_TIMEOUT 到底是什么?秒还是毫秒?我们能将其设置为无超时吗?@AdrianGhiuta - shinoymm
1
DATABASE_COMMAND_TIMEOUT 是秒数。据我所知,必须为其设置一个值(否则默认为30秒),不能将其设置为无超时。 - Adrian Ghiuta
它可以被设置为零,这意味着没有超时。 - shinoymm
谢谢,这非常有帮助。 - Chet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接