python – 使用postgresql数据库时uwsgi下的django app无法启动
发布时间:2020-12-20 11:48:28 所属栏目:Python 来源:网络整理
导读:我在AWS上的Ubuntu 14.04中设置了一个应用程序 – NGINX – UWSGI – DJANGO APP. 当使用sqllite3时,应用程序运行完全正常,但是当我使用 django.db.backends.postgresql_psycopg2w作为我的数据库引擎时,它无法加载,我在uwsgi日志中找到了这个: - *** Starti
我在AWS上的Ubuntu 14.04中设置了一个应用程序 – > 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",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安装了以下软件包: psycopg2 == 2.6.1包也安装在我的venv中. 任何人都可以指出我正确的方向,我现在已经搜索了几个小时,并且不知道它为什么会失败. 解决方法
我终于弄清楚我的问题是什么.在我的uwsgi.ini文件中
limit-as = 128 此开关将uwsgi进程的地址空间限制为128mb.我想这对PostgreSQL驱动程序来说还不够.取下开关后,一切都像魅力一样.虽然最好找到一个有效的值,而不是仅仅删除该值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【Python实现图片验证码】
- python – 恢复使用迭代器的Tensorflow模型
- 如何判断Django会话是否是新的?
- Python socket.error: [Errno 98] Address already in use的
- python – PyTables问题 – 迭代表的子集时的结果不同
- python – Tensorflow:在方法中使用会话/图形
- Python数据库 4.Python与数据库的交互
- python – Lasso – 选择scikit坐标下降的初始点
- python比较2列,如果第3列与第2列匹配,则用第1列的值编写第4
- python – sys.path.append(‘…’)语句应该去哪里?