cx_oracle 多线程场景出错 - ORA 24550 错误

cx_oracle errors out on multi threaded scenario - ORA 24550 error

我们在 运行 与 Oracle 集成的 Django 应用程序时遇到了一个非常棘手的问题。

我们在每个页面的每个查询中获取相当多的数据 [大约 2 MB]。当用户同时打开 5-6 个页面时,Django 控制台会显示 ORA-24550 信号,之后 Django 会话会因段错误而终止。显示的错误是 (KPEDBG_HDL_POP_FCPTR) 或 (KPEDBG_HDL_PUSH_FCPTR)。在那之后,即使我们重新启动 Django 会话,它也会自动终止 - 一段时间。之后服务器恢复正常。

这只发生在多处理器环境中。 几天来我们一直在尝试调试它,但仍然无济于事。异常处理不起作用。我们在选项中添加了 threaded=True - 以使其对多线程友好。似乎没有任何效果。

其他页面,数据较少,问题不存在。这仅发生在具有 2 MB 数据的页面上 - 不幸的是 - 我们无法避免。

此错误在 Ubuntu 和 CentOS 中均有显示。 Windows 机器上似乎没有这个问题。所以这有可能是环境相关的。

有没有人遇到过这个问题?如果有人可以提供帮助,那将非常有帮助。我们现在都在这个问题上拔头发了。

此致,
拉杰莫汉 H

您必须在 "settings.py" 文件中添加指令 "threaded"。像这样:

DB_QUALITY = {
    'ENGINE': 'django.db.backends.oracle',
    'NAME': 'instance',
    'USER': 'user',
    'PASSWORD': 'xxxxxxx',
    'HOST': '0.0.0.0',
    'PORT': '1521',
    'OPTIONS': {'threaded': True}
}

DATABASES = {
    'default': DB_QUALITY,
}

抱歉,我之前忘记添加答案了。我在 Oracle XE 中对此进行了测试。一旦我离开 XE,它就开始正常工作了。此外,我们开始使用 Oraclepool 和它一起使用 - 我现在不记得是 oraclepool 还是 XE 移动让它工作,但无论如何它现在正在工作