使用PostgreSQL数据库时,uwsgi下的django应用无法启动

gregor2004ua

我在Ubuntu 14.04的AWS-> NGINX-> UWSGI-> DJANGO APP上设置了一个应用程序使用sqllite3时,该应用程序运行完全正常,但是当我使用django.db.backends.postgresql_psycopg2w作为数据库引擎时,该应用程序无法加载,并且在uwsgi日志中发现了这一点:

- *** Starting uWSGI 2.0.12 (64bit) on [Mon Jan 18 05:36:25 2016] ***
 - compiled with version: 4.8.4 on 18 January 2016 04:10:30
 - os: Linux-3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015
 - nodename: ip-172-31-55-58
 - machine: x86_64
 - clock source: unix
 - detected number of CPU cores: 1
 - current working directory: /var/www/carzumer_api
 - detected binary path: /usr/local/bin/uwsgi
 - !!! no internal routing support, rebuild with pcre support !!!
 - setgid() to 33
 - setuid() to 33
 - chdir() to /var/www/carzumer_api/src/
 - your processes number limit is 7862
 - limiting address space of processes...
 - your process address space limit is 134217728 bytes (128 MB)
 - your memory page size is 4096 bytes
 -  *** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers ***
 - detected max file descriptor number: 1024
 - lock engine: pthread robust mutexes
 - thunder lock: disabled (you can enable it with --thunder-lock)
 - uwsgi socket 0 bound to UNIX address /var/www/carzumer_api/run/uwsgi.sock fd 6
 - Python version: 2.7.6 (default, Jun 22 2015, 18:01:27)  [GCC 4.8.2]
 - Set PythonHome to /var/www/carzumer_api/env
 - *** Python threads support is disabled. You can enable it with --enable-threads ***
 - Python main interpreter initialized at 0x2047200
 - your server socket listen backlog is limited to 100 connections
 - your mercy for graceful operations on workers is 60 seconds
 - mapped 363840 bytes (355 KB) for 4 cores
 - *** Operational MODE: preforking ***
Traceback (most recent call last):
  File "./carzumer_api/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/contrib/auth/models.py", line 41, in <module>
    class Permission(models.Model):
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/models/base.py", line 139, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/models/base.py", line 324, in add_to_class
    value.contribute_to_class(cls, name)
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/models/options.py", line 250, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/__init__.py", line 36, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/utils.py", line 240, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/utils.py", line 111, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/var/www/carzumer_api/env/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 24, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: libgpg-error.so.0: failed to map segment from shared object: Cannot allocate memory
 - unable to load app 0 (mountpoint='') (callable not found or import error)
 - *** no app loaded. going in full dynamic mode ***
 - *** uWSGI is running in multiple interpreter mode ***
 - spawned uWSGI master process (pid: 11351)
 - spawned uWSGI worker 1 (pid: 11354, cores: 1)
 - spawned uWSGI worker 2 (pid: 11355, cores: 1)
 - --- no python application found, check your startup logs for errors ---
{address space usage: 81760256 bytes/77MB} {rss usage: 21651456 bytes/20MB} [pid: 11355|app: -1|req: -1/1] 127.0.0.1 () {32 vars in 351 bytes} [Mon Jan 18 05:37:50 2016] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers in 82 bytes (0 switches on core 0)

我已经使用apt-get安装了以下软件包:libpq-dev python-dev postgresql postgresql-contrib nginx python-pip

在我的venv中也安装psycopg2 == 2.6.1软件包。

有人可以指出正确的方向吗?我已经搜寻了几个小时,却不知道为什么会失败。

gregor2004ua

我终于弄清楚我的问题是什么。在我的uwsgi.ini文件中,

limit-as = 128

此开关将uwsgi进程的地址空间限制为128mb。我想这对于PostgreSQL驱动程序还不够。拆下开关后,所有内容都像一个超级按钮。尽管最好找到一个可行的值,而不是完全删除该值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

应用启动时无法查找数据库

使用 docker 容器时无法迁移 Django 数据库

使用 Cloud SQL PostgreSQL DB 的 Cloud Run 上的 Django 应用程序出错 - 无法连接到数据库

Flutter应用启动时如何设置数据库?

在应用程序启动时清理数据库

使用 Firebase 数据库的 Android 应用程序在启动时总是崩溃?

在应用程序启动时使用Entity Framework核心运行数据库迁移

无法使用Sequelize从本地节点应用程序连接到Heroku Postgresql数据库

当我将PostgreSQL作为Django的数据库时,为什么要使用Redis?

使用docker-compose时Django无法找到数据库

无法使用默认的PostgreSQL Docker映像创建数据库

无法使用 wix 工具集创建 postgresql 数据库

加载数据时无法使用数据库

无法使用Django将数据插入数据库

在应用程序启动时使用Entity Framework ASP.NET Core运行数据库迁移

Openshift中的PostgreSQL无法执行入口点,也无法启动数据库

使用Django项目在Docker中创建Postgresql数据库

当数据包含日语字符时,无法使用 org.postgresql.copy.CopyManager 插入数据库

在不重新启动应用程序的情况下更新SQLite数据库

无法将Psycopg2与pythonista应用程序一起使用访问postgreSQL数据库

与连接PostgreSQL数据库春季启动应用程序错误

在Heroku上的Django应用中使用外部数据库

h2数据库保留数据,但在应用程序启动时重置

在Firebase中使用数据库时,按下按钮会导致无法解释的“重定向”

通过MS Word中的邮件合并连接到数据库时,使用户无法查看特定模式下的表

如何在使用 django 按下 html 按钮时将布尔值保存到数据库中

Django无法创建与“ postgres”数据库的连接,而是将使用默认数据库

Django无法使用inspectdb对旧数据库建模

无法使用Django连接到Firebird数据库