2016-06-14 195 views
2

因爲我做了一個點安裝谷歌API-python客戶端我有我的Gunicorn工作人員超時後停止。Gunicorn Django [CRITICAL]工作者超時

Django的== 1.5.3

Gunicorn == 0.12.2

我真的不知道,如果它來自點子,但我沒做什麼特別的,除了其遷移沒有錯誤數據庫遷移。

我使用這個命令Gunicorn:

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 

我tryed帕拉姆--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) 

由於這一問題排在同時我安裝了google api客戶端,我懷疑pip已經升級了一些與我的gunicorn或Django不兼容的庫。我也檢查了點子日誌沒有成功。

如果我用runserver運行我的Django應用程序,我看不到任何錯誤,它似乎與Gunicorn非常相關。

有沒有更深入的調試Gunicorn的方法?

回答

1

掙扎幾個小時後,我終於在pip日誌(HOME/.pip/pip.log)中找到線索。

安裝谷歌的API客戶端升級一些我以前的庫的這樣的:

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警告。我決定放回舊的庫。

  • pyOpenSSL 0.14
  • 6 1.9.0
  • 密碼0.7.1

它解決了這個問題。我不知道它是pyopenssl還是密碼學,但是讓所有這些libs問題變得非常無聊。

希望這會幫助下一次的人。