【问题标题】:Django API keeps loading and throws timeout error when 'statsmodels.api' package is imported导入“statsmodels.api”包时,Django API 不断加载并引发超时错误
【发布时间】:2021-03-26 23:21:00
【问题描述】:

在 urls.py 中

from django.contrib import admin
from django.urls import path
import pandas as pd
import statsmodels.api as sm
urlpatterns = [path('admin/',admin.site.urls),]

当我注释掉“import statsmodels.api as sm”行时,API 工作正常并显示 django 主页,但是当我包含 statsmodels 包时,它会继续加载并引发超时错误。请提出问题所在。包在django环境中正确安装。

附加信息:(Python 版本 - 3.8.5,Django - 3.1.4,Ubuntu - 20.4)

在 Ubuntu EC2 实例中部署了这个 django API(用这个 django 安装了 apache2 和 mod_wsgi),并使用从本地计算机调用 django API 公共 IPv4 DNS。 (关注本站部署django和apache-https://studygyaan.com/django/how-to-setup-django-applications-with-apache-and-mod-wsgi-on-ubuntu

【问题讨论】:

  • 只导入你需要的,而不是 statsmodels.api,见statsmodels.org/dev/…
  • @Josef 只导入了 add_constant,仍然面临同样的问题。更改 Python 版本或 Ubuntu 版本是否可以解决问题?还有其他解决方案吗?
  • from statsmodels.tools.tools import add_constant 加载 numpy、pandas 和 scipy 的一部分,但不加载 statsmodels。
  • 版本和平台之间不应该有任何大的差异。如果计算机仍然在缓存内存中重复使用导入,则速度会快得多。
  • 导入其他包没有延迟。实际上,我正在导入 10 多个包,例如 pyodbc、sqlalchemy、datetime 等。只有 statsmodels 包和 sklearn 包不能正常工作。我已经再次卸载并重新安装了这些包,但是当我包含 statsmodels/sklearn 时 django 网站并没有停止加载,但是当我取出这些包时工作正常。

标签: python django ubuntu django-rest-framework django-templates


【解决方案1】:

urls.py 文件不是使用statsmodels 的地方。您可以在views.py 中使用statsmodels,然后在urls.py 文件中定义该视图的URL。

【讨论】:

  • 我也在views.py中使用了它。仍然有同样的问题。其他包运行良好,如 pandas、numpy、os,但 statsmodel.api 需要时间。当我使用“import statsmodels as sm”时,它可以正常工作,但“import statsmodels.api as sm”会继续加载和加载。还有其他解决方案吗?将我的 python 版本降级到 3.7 有帮助吗?
  • 知道了,所以我认为您正在使用它的代码需要很长时间 -> 请求超时。尝试解决它
  • 我根本没有任何代码。这是一个默认的 django 应用程序。 urls.py 仅使用使用 admin.site.urls 的默认 django 页面。即使我使用了views.py,代码也只是将'Success'作为HTTPResponse返回。
【解决方案2】:

终于解决了问题(签出:Django Webfaction 'Timeout when reading response headers from daemon process'

已知 Python C 扩展模块(如 statsmodels/numpy)在 mod_wsgi 下使用时会导致超时。 https://serverfault.com/a/514251/109598

如果这听起来可能是您的问题的原因,那么解决方案可能很简单 - 将以下内容添加到您的 apache2.conf。进入etc/apache2/apache2.conf中的apache2.conf,在最后添加如下代码

WSGIApplicationGroup %{GLOBAL}

请务必在进行更改后重新启动您的 Apache 实例

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2021-10-23
    • 2016-01-15
    • 2021-10-17
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多