【问题标题】:Fatal Python error: PyEval_AcquireThread致命的 Python 错误:PyEval_AcquireThread
【发布时间】:2013-08-02 09:27:54
【问题描述】:

我刚刚在网上发布了一个 django 应用程序,我的错误日志中出现了这个错误

Fatal Python error: PyEval_AcquireThread: NULL new thread state

我在网上看到了几个类似的问题,但他们并没有解释这个错误。

【问题讨论】:

  • 您遇到的是 C 错误,而不是 Python 错误,因此该错误在您的某个 C 库中。您能否提供更多信息,例如:您是否以某种方式扩展/嵌入 Python?你使用什么 Python 扩展?应用程序部署在什么环境中?
  • 我不明白这意味着什么(扩展/嵌入 Python)

标签: django apache2 mod-wsgi


【解决方案1】:

如果同时启用了 apache mod_wsgimod_python,则会出现问题。 试试

sudo a2dismod python
sudo service apache2 restart

【讨论】:

  • 这并不是一个真正好的解决方案,因为在某些情况下,我们希望在同一个虚拟主机上也保留良好而简单的mod_python
【解决方案2】:

这往往表明您的 mod_wsgi 编译为不同的 Python 版本和/或不同的 Python 安装,而不是它试图在运行时使用的 Python 虚拟环境或 Python 安装。

换句话说,您正在混合来自不同 Python 安装的已编译共享库和扩展模块。这可能会导致各种问题。

办理登机手续:

了解您的 mod_wsgi 是如何构建的,并验证它是否符合您的预期。

【讨论】:

  • 我有同样的错误,但是我使用的是Debian的标准Python版本+官方Debian软件包libapache2-mod-wsgi,所以我不认为这是Python版本不匹配......这个错误似乎确实很难调试。
【解决方案3】:

在我的情况下,它是 Django 或 Flask 项目所在目录的权限。它们是从根目录创建的,因此我将它们更改为 www-data。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多