2014-02-20 2 views
1

Запуск [email protected]:~/proj/nopain/src/django⟫ gunicorn nopain.wsgi дает мне ошибку в рабочем процессе: ImportError:gunicorn Джанго ошибка импорта «Невозможно импортировать настройки» «не может импортировать имя StaticFilesHandler»

Бег python manage.py runserver кажется, работает хорошо.

Я пытаюсь отлаживать, но кажется, что путь python в порядке ... Пожалуйста, помогите.

2014-02-20 10:33:22 [6851] [INFO] Starting gunicorn 18.0 
2014-02-20 10:33:22 [6851] [INFO] Listening at: http://127.0.0.1:8000 (6851) 
2014-02-20 10:33:22 [6851] [INFO] Using worker: sync 
2014-02-20 10:33:22 [6856] [INFO] Booting worker with pid: 6856 
2014-02-20 02:33:23 [6856] [ERROR] Exception in worker process: 
Traceback (most recent call last): 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker 
    worker.init_process() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi 
    self.callable = self.load() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load 
    return self.load_wsgiapp() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app 
    __import__(module) 
    File "/home/shahar/proj/nopain/src/django/nopain/wsgi.py", line 29, in <module> 
    from dj_static import Cling 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/dj_static.py", line 8, in <module> 
    from django.contrib.staticfiles.handlers import StaticFilesHandler as DebugHandler 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 13, in <module> 
    from django.contrib.staticfiles.views import serve 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/contrib/staticfiles/views.py", line 16, in <module> 
    from django.views import static 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/views/static.py", line 98, in <module> 
    template_translatable = ugettext_noop("Index of %(directory)s") 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 60, in gettext_noop 
    return _trans.gettext_noop(message) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 47, in __getattr__ 
    if settings.USE_I18N: 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/conf/__init__.py", line 134, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'nopain.settings' (Is it on sys.path?): cannot import name StaticFilesHandler 
Traceback (most recent call last): 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker 
    worker.init_process() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi 
    self.callable = self.load() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load 
    return self.load_wsgiapp() 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app 
    __import__(module) 
    File "/home/shahar/proj/nopain/src/django/nopain/wsgi.py", line 29, in <module> 
    from dj_static import Cling 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/dj_static.py", line 8, in <module> 
    from django.contrib.staticfiles.handlers import StaticFilesHandler as DebugHandler 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 13, in <module> 
    from django.contrib.staticfiles.views import serve 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/contrib/staticfiles/views.py", line 16, in <module> 
    from django.views import static 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/views/static.py", line 98, in <module> 
    template_translatable = ugettext_noop("Index of %(directory)s") 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 60, in gettext_noop 
    return _trans.gettext_noop(message) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 47, in __getattr__ 
    if settings.USE_I18N: 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/home/shahar/.virtualenvs/nopain/local/lib/python2.7/site-packages/django/conf/__init__.py", line 134, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'nopain.settings' (Is it on sys.path?): cannot import name StaticFilesHandler 
2014-02-20 02:33:23 [6856] [INFO] Worker exiting (pid: 6856) 
2014-02-20 10:33:23 [6851] [INFO] Shutting down: Master 
2014-02-20 10:33:23 [6851] [INFO] Reason: Worker failed to boot. 

Похоже, что мне нужно добавить более подробную информацию ... в соответствии с красным всплывающим окном в stackoverflow. Итак, вот какой-то бессмысленный текст.

Это мой nopain/wsgi.py:

import os 
import sys 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nopain.settings") 

from django.core.wsgi import get_wsgi_application 
from dj_static import Cling 
application = Cling(get_wsgi_application()) 

Вот мой nopain/settings.py:

# -*- coding: utf-8 -*- 
"""Settings file for `nopain.co.il`.""" 

############################################################################### 
# BASE AND HELPER STATEMENTS ################################################## 

import os 
from django.utils.translation import ugettext 

SITE_ID = 1 

PROJECT_PATH = os.path.split(os.path.abspath(os.path.dirname(__file__)))[0] 

MIDDLEWARE_CLASSES = (
    'django.middleware.locale.LocaleMiddleware', 
    'sslifyadmin.middleware.SSLifyAdminMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'axes.middleware.FailedLoginMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    # Uncomment the next line for simple clickjacking protection: 
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.middleware.doc.XViewMiddleware', 
    'cms.middleware.page.CurrentPageMiddleware', 
    'cms.middleware.user.CurrentUserMiddleware', 
    'cms.middleware.toolbar.ToolbarMiddleware', 
    'cms.middleware.language.LanguageCookieMiddleware', 
) 

ROOT_URLCONF = 'nopain.urls' 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.admin', 
    'south', 
    'djangojs', 
) 

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' 


############################################################################### 
# DEBUGGING ################################################################### 

if os.environ.get('DEBUG') == 'True': 
    DEBUG = True 
else: 
    DEBUG = False 

TEMPLATE_DEBUG = DEBUG 


############################################################################### 
# EMAILS ###################################################################### 

ADMINS = (
    ('Shahar Or', '[email protected]'), 
) 

MANAGERS = ADMINS 

SEND_BROKEN_LINK_EMAILS = True 


############################################################################### 
# DATABASE #################################################################### 

INSTALLED_APPS += ('dj_database_url',) 

import dj_database_url 
DATABASES = {'default': dj_database_url.config()} 


############################################################################### 
# SECURITY #################################################################### 

ALLOWED_HOSTS = ['*'] 

SECRET_KEY = os.environ.get('SECRET_KEY') 

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

INSTALLED_APPS += ('axes',) 

AXES_LOGIN_FAILURE_LIMIT = 5 
AXES_LOCK_OUT_AT_FAILURE = True 
AXES_USE_USER_AGENT = False 
AXES_COOLOFF_TIME = 1 
AXES_LOGGER = 'axes.watch_login' 
AXES_LOCKOUT_TEMPLATE = None 
AXES_LOCKOUT_URL = None 
AXES_VERBOSE = True 

############################################################################### 
# STATIC FILES ################################################################ 

INSTALLED_APPS += ('django.contrib.staticfiles',) 

STATIC_ROOT = os.path.join(PROJECT_PATH, 'staticfiles') 

STATIC_URL = '/static/' 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

STATICFILES_DIRS = (os.path.join(PROJECT_PATH, 'static'),) 


############################################################################### 
# TEMPLATES ################################################################### 

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
) 

TEMPLATE_DIRS = (os.path.join(PROJECT_PATH, 'templates'),) 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.request', 
    'django.core.context_processors.media', 
    'django.core.context_processors.static', 
    'cms.context_processors.media', 
    'sekizai.context_processors.sekizai', 
) 

CMS_TEMPLATES = (
    ('base.html', ugettext('Base template')), 
    ('home.html', ugettext('Home page template')), 
    ('text-page.html', ugettext('Text page template')), 
    ('contact.html', ugettext('Contact page template')), 
    ('article.html', ugettext('Article')), 
    ('videos.html', ugettext('Videos')), 
    ('gallery.html', ugettext('Gallery')), 
) 


############################################################################### 
# I18N ######################################################################## 

USE_I18N = True 
LANGUAGE_CODE = 'en-us' 
LANGUAGES = [ 
    ('en', u'English\u200B'), 
    ('he', u'עברית'), 
    ('de', u'Deutsche'), 
] 

LOCALE_PATHS = (os.path.join(PROJECT_PATH, 'conf/locale'),) 

USE_TZ = True 
TIME_ZONE = 'Asia/Jerusalem' 

USE_L10N = True 

INSTALLED_APPS += (
    'bidiutils', 
) 

TEMPLATE_CONTEXT_PROCESSORS += (
    'bidiutils.context_processors.bidi', 
) 


############################################################################### 
# WSGI ######################################################################## 

WSGI_APPLICATION = 'nopain.wsgi.application' 


############################################################################### 
# MEDIA ####################################################################### 

if os.environ.get('MEDIA_STORAGE') == 'local': 
    MEDIA_ROOT = os.path.join(
     PROJECT_PATH, 
     'media/' 
    ) 
    MEDIA_URL = '/media/' 
    THUMBNAIL_DEFAULT_STORAGE = \ 
     'easy_thumbnails.storage.ThumbnailFileSystemStorage' 

elif os.environ.get('MEDIA_STORAGE') == 'remote': 
    INSTALLED_APPS += ('storages',) 
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    THUMBNAIL_DEFAULT_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 
    AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') 
    AWS_STORAGE_BUCKET_NAME = 'nopain-media-files' 
    MEDIA_URL = 'https://s3-eu-west-1.amazonaws.com/%s/media/'\ 
     % os.environ.get('AWS_S3_MEDIA_BUCKET_NAME') 
    MEDIA_ROOT = 'media/' 

INSTALLED_APPS += (
    'easy_thumbnails', 
) 

THUMBNAIL_BASEDIR = 'thumbs' 

THUMBNAIL_DEBUG = DEBUG 

THUMBNAIL_MEDIA_ROOT = MEDIA_ROOT 
THUMBNAIL_MEDIA_URL = MEDIA_URL 


############################################################################### 
# CMS ######################################################################### 

INSTALLED_APPS += (
    'cms', 
    'mptt', 
    'menus', 
    'sekizai', 
    'cms.plugins.text', 
    'reversion', 
    'cmsplugin_gallery', 
    'cms.plugins.picture', 
    'cms.plugins.link', 
    'cms.plugins.googlemap', 
    'cmsplugin_video_youtube', 
) 

# PLACEHOLDERS 

CMS_PLACEHOLDER_CONF = { 
    'text': { 
     'plugins': ['TextPlugin'], 
     'name': ugettext('Text'), 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
    'text2': { 
     'plugins': ['TextPlugin'], 
     'name': ugettext('Text'), 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
    'gallery': { 
     'name': ugettext('Gallery'), 
     'plugins': ['CMSGalleryPlugin'], 
     'limits': { 
      'global': 1, 
      'CMSGalleryPlugin': 1, 
     }, 
    }, 
    'google_map': { 
     'name': ugettext('Google Map'), 
     'plugins': ['GoogleMapPlugin'], 
     'limits': { 
      'global': 1, 
      'GoogleMapPlugin': 1, 
     }, 
    }, 
    'youtubes_preface': { 
     'name': ugettext('Preface'), 
     'plugins': ['TextPlugin'], 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
    'youtubes_header_testimonials': { 
     'name': ugettext('Testimonials header'), 
     'plugins': ['TextPlugin'], 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
    'youtubes_testimonials': { 
     'name': ugettext('Testimonial YouTubes'), 
     'plugins': ['YouTubeVideoPlugin'], 
    }, 
    'youtubes_header_paula': { 
     'name': ugettext('Paula header'), 
     'plugins': ['TextPlugin'], 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
    'youtubes_paula': { 
     'name': ugettext('Paula YouTubes'), 
     'plugins': ['YouTubeVideoPlugin'], 
    }, 
    'youtubes_header_mds': { 
     'name': ugettext('MD\'s header'), 
     'plugins': ['TextPlugin'], 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
    'youtubes_mds': { 
     'name': ugettext('MD\'s YouTubes'), 
     'plugins': ['YouTubeVideoPlugin'], 
    }, 
    'youtubes_copyright': { 
     'name': ugettext('Copyright notice'), 
     'plugins': ['TextPlugin'], 
     'limits': { 
      'global': 1, 
      'TextPlugin': 1, 
     }, 
    }, 
} 

############################################################################### 
# WYMEDITOR ################################################################### 

WYM_TOOLS = ",\n".join([ 
    "{'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'}", 
    "{'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'}", 
    "{'name': 'Superscript', 'title': 'Superscript',\ 
    'css': 'wym_tools_superscript'}", 
    "{'name': 'Subscript', 'title': 'Subscript',\ 
    'css': 'wym_tools_subscript'}", 
    "{'name': 'InsertOrderedList', 'title': 'Ordered_List',\ 
    'css': 'wym_tools_ordered_list'}", 
    "{'name': 'InsertUnorderedList', 'title': 'Unordered_List',\ 
    'css': 'wym_tools_unordered_list'}", 
    "{'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'}", 
    "{'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'}", 
    "{'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'}", 
    "{'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'}", 
    "{'name': 'Paste', 'title': 'Paste_From_Word', 'css': 'wym_tools_paste'}", 
    "{'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'}", 
    "{'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'}", 
    "{'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'}", 
    #"{'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'}", 
    "{'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'}", 
    #"{'name': 'Preview', 'title': 'Preview', 'css': 'wym_tools_preview'}", 
    "{'name': 'DirectionLtr', 'title': 'Left_to_Right',\ 
    'css': 'wym_tools_direction_ltr'}", 
    "{'name': 'DirectionRtl', 'title': 'Right_to_Left',\ 
    'css': 'wym_tools_direction_rtl'}", 
    "{'name': 'DirectionRemove', 'title': 'Remove_Direction',\ 
    'css': 'wym_tools_direction_remove'}", 
]) 

ответ

1

Так что я решил это:

  1. не собирается gunicorn nopain.wsgi но идущий python manage.py run_gunicorn (требует gunicorn в INSTALLED_APPS)
  2. Я обнаружил, что таким образом я должен иметь либо settings.LOGGING с version или settings.LOGGING_CONFIG = None (или это False?)
Смежные вопросы