Gunicorn Django[关键]工作线程超时
由于我安装了一个pip的google api python客户端,我让我的Gunicorn工作人员在超时后停止工作 Django==1.5.3 Gunicorn==0.12.2 我不确定它是否来自pip,但我没有做任何特别的事情,只做了一次数据库迁移,迁移时没有出错 我对Gunicorn使用以下命令:Gunicorn Django[关键]工作线程超时,django,gunicorn,Django,Gunicorn,由于我安装了一个pip的google api python客户端,我让我的Gunicorn工作人员在超时后停止工作 Django==1.5.3 Gunicorn==0.12.2 我不确定它是否来自pip,但我没有做任何特别的事情,只做了一次数据库迁移,迁移时没有出错 我对Gunicorn使用以下命令: gunicorn_django myapp.py --bind 127.0.0.1:8181 --timeout 120 --log-file /tmp/myapp.gunicorn.log --
gunicorn_django myapp.py --bind 127.0.0.1:8181 --timeout 120 --log-file /tmp/myapp.gunicorn.log --log-level info --workers 8 --pid /tmp/myapp.pid
我试着让param——spew有一些痕迹,但这对我没有帮助:
[2016-06-13 21:09:52 +0000] [15602] [INFO] Worker exiting (pid: 15602)
[2016-06-13 21:09:52 +0000] [15601] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
worker.init_process()
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process
self.load_wsgi()
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
self.wsgi = self.app.wsgi()
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 106, in load
return mod.make_wsgi_application()
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 37, in make_wsgi_application
if get_validation_errors(s):
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/core/management/validation.py", line 35, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/db/models/loading.py", line 166, in get_app_errors
self._populate()
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/db/models/loading.py", line 72, in _populate
self.load_app(app_name, True)
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/db/models/loading.py", line 96, in load_app
models = import_module('.models', app_name)
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/myapp/prod/apps/admin/models.py", line 5, in <module>
from django.contrib.auth.models import User
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/contrib/auth/models.py", line 18, in <module>
from django.contrib.auth.hashers import (
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/contrib/auth/hashers.py", line 8, in <module>
from django.test.signals import setting_changed
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/test/__init__.py", line 6, in <module>
from django.test.testcases import (TestCase, TransactionTestCase,
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/test/testcases.py", line 35, in <module>
from django.test import _doctest as doctest
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/django/test/_doctest.py", line 104, in <module>
import unittest, difflib, pdb, tempfile
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/pdbpp-0.7.2-py2.7.egg/pdb.py", line 38, in <module>
pdb = import_from_stdlib('pdb')
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/pdbpp-0.7.2-py2.7.egg/pdb.py", line 35, in import_from_stdlib
mydict = execfile(pyfile, result.__dict__)
File "/usr/local/lib/python2.7/pdb.py", line 3, in <module>
"""A Python debugger."""
File "/usr/local/lib/python2.7/pdb.py", line 3, in <module>
"""A Python debugger."""
File "/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site-packages/gunicorn/debug.py", line 40, in __call__
line = src[lineno]
IndexError: tuple index out of range
[2016-06-13 21:09:52 +0000] [15601] [INFO] Worker exiting (pid: 15601)
[2016-06-13 21:09:52+0000][15602][INFO]工人退出(pid:15602)
[2016-06-13 21:09:52+0000][15601][错误]工人流程中的异常
回溯(最近一次呼叫最后一次):
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/arbiter.py”,第557行,在spawn_worker中
worker.init_进程()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/workers/base.py”,第126行,在初始化过程中
self.load_wsgi()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/workers/base.py”,第136行,在load\u wsgi中
self.wsgi=self.app.wsgi()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/app/base.py”,第67行,在wsgi中
self.callable=self.load()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/app/djangoapp.py”,第106行,已加载
返回mod.make_wsgi_应用程序()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/app/django_wsgi.py”,make_wsgi_应用程序第37行
如果获取验证错误:
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/core/management/validation.py”,第35行,在get\u validation\u errors中
对于get_app_errors()中的(app_name,error)。项()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/db/models/loading.py”,第166行,在get\u app\u errors中
自我.()
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/db/models/load.py”,第72行,在
self.load\u应用程序(应用程序名称,True)
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/db/models/loading.py”,第96行,加载应用程序中
模型=导入模块('.models',应用程序名称)
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/utils/importlib.py”,导入模块第35行
__导入(名称)
文件“/home/myapp/prod/apps/admin/models.py”,第5行,在
从django.contrib.auth.models导入用户
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/contrib/auth/models.py”,第18行,在
从django.contrib.auth.hasher导入(
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/contrib/auth/hasher.py”,第8行,在
从django.test.signals导入设置\u更改
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/test/_init__.py”,第6行,在
从django.test.testcases导入(TestCase、TransactionTestCase、,
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/test/testcases.py”,第35行,在
从django.test导入_doctest作为doctest
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/django/test/_doctest.py”,第104行,在
导入unittest、difflib、pdb、tempfile
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/pdbpp-0.7.2-py2.7.egg/pdb.py”,第38行,在
pdb=从标准数据库(pdb)导入
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/pdbpp-0.7.2-py2.7.egg/pdb.py”,第35行,从标准数据库导入
mydict=execfile(pyfile,result.\uu dict\uu)
文件“/usr/local/lib/python2.7/pdb.py”,第3行,在
“”“Python调试器。”“”
文件“/usr/local/lib/python2.7/pdb.py”,第3行,在
“”“Python调试器。”“”
文件“/home/myapp/.local/share/virtualenvs/myapp/lib/python2.7/site packages/gunicorn/debug.py”,第40行,在调用中__
line=src[lineno]
索引器错误:元组索引超出范围
[2016-06-13 21:09:52+0000][15601][INFO]工人退出(pid:15601)
由于问题是在我安装google api客户端的同时出现的,我怀疑pip升级了一些与我的gunicorn或Django不兼容的LIB。我也检查了pip日志,但没有成功
如果我用runserver运行Django应用程序,我看不到任何bug,它似乎与Gunicorn非常相关
有没有更深入的方法来调试Gunicorn?经过几个小时的努力,我终于在pip日志(HOME/.pip/pip.log)中找到了一条线索 安装google api客户端升级了我以前的一些LIB,如下所示:
Installing collected packages: pyopenssl, six, cryptography, idna, pyasn1, setuptools, enum34, ipaddress, cffi, pycparser
Found existing installation: pyOpenSSL 0.14
Uninstalling pyOpenSSL:
...
Found existing installation: six 1.9.0
Uninstalling six:
...
Found existing installation: cryptography 0.7.1
Uninstalling cryptography:
我还注意到一些cyptography的安装警告。我决定把旧的libs放回去
- pyopenssl0.14
- 六个1.9.0
- 密码学0.7.1