0

Я пытаюсь использовать django-social-auth в своем проекте. Он работает хорошо на моем локальном компьютере (с использованием manage.py runningerver), но не работает на сервере моего хостера (locum.ru) (с использованием mod_wsgi).Ошибка django-social-auth 500: Преждевременный конец заголовков скриптов: django.wsgi

Я вижу это в моих журналах Джанго на сервере:

[2012-06-26 22:19:24,796] DEBUG [django.db.backends:44] (0.000) SET FOREIGN_KEY_CHECKS=0;; args=() 
[2012-06-26 22:19:24,817] DEBUG [django.db.backends:44] (0.000) SELECT `django_session`.`session_key`, `django_session`.`session_dat 
a`, `django_session`.`expire_date` FROM `django_session` WHERE (`django_session`.`session_key` = 392a94a6d2a667ff755a9d45a79582d0 AN 
D `django_session`.`expire_date` > 2012-06-26 22:19:24); args=('392a94a6d2a667ff755a9d45a79582d0', u'2012-06-26 22:19:24') 
[2012-06-26 22:19:24,857] DEBUG [myapp.context_processors:11] Adding something to context. 

(myapp.context_processors только простой контекст процессор, который не делает ничего, кроме уведомив меня, что это называется)

и это по ошибке .log:

[Tue Jun 26 22:19:24 2012] [error] [client 34.34.34.34] Premature end of script headers: django.wsgi 

Когда я выключаю django-social-auth в своих настройках.py все работает хорошо. Когда я включаю его - он терпит неудачу!

У меня есть python 2.7.3 локально и python 2.6.6 на сервере (но он работает без social-auth, так что это не проблема, я думаю ...) и Django 1.3.1.

Может ли кто-нибудь дать мне подсказку, где копать?

UPD: Я добавил некоторые протоколирование и теперь я вижу, что он не на импорт из social_auth:

logger.debug('Before import from social_auth') 
from social_auth.views import complete, auth, disconnect 
logger.debug('After import from social_auth') 

«Перед импортом ...» появляется в журнале отладки, «После ...» Безразлично «т. Но он работает на моем локальном рабочем столе! Где волшебство ?!

UPD2: Я добавил еще несколько протоколирование в social_auth и теперь я вижу, что social_auth импорт питон-OpenID, openid.yadis.extrd запускает эти строки:

from openid.oidutil import importElementTree 
ElementTree = importElementTree() 

и importElementTree() содержит:

for mod_name in module_names: 
    try: 
     logger.debug('importElementTree - 2 - ' + mod_name) 
     ElementTree = __import__(mod_name, None, None, ['unused']) 
     logger.debug('importElementTree - 3 - ' + mod_name) 
    except ImportError: 
     logger.debug('importElementTree - except ImportError') 
     pass 

в файле журнал появляется:

[2012-06-30 09:18:51,186] DEBUG [shoplist:39] In openid.yadis.extrd - 5 
[2012-06-30 09:18:51,186] DEBUG [shoplist:56] importElementTree 
[2012-06-30 09:18:51,186] DEBUG [shoplist:61] importElementTree - 1 
[2012-06-30 09:18:51,186] DEBUG [shoplist:64] importElementTree - 2 - lxml.etree 

Итак, он не может импортировать lxml.etree, но не бросает ImportError. Зачем? Я проверил, что у меня такие же версии django-social-auth, python-openid и python-lxml на локальном компьютере и на сервере. И он все еще не работает на сервере!

ответ

0

Указывает, что вы, скорее всего, используете бит режима демона, процесс которого терпит крах. Если вы не видите главный журнал ошибок Apache, хотя и только виртуальный хост, возможно, вы не сможете увидеть аварийное сообщение.

Посмотрите, можете ли вы заставить приложение работать в основном интерпретаторе внутри процесса, а не через суб-интерпретатор.

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

+0

WSGIApplicationGroup% {GLOBAL} должен быть использован в апача файле .conf? Но я не могу связаться с конфигурацией apache на виртуальном хостинге :( – kotslon

+0

Если проблема с суб-интерпретатором является проблемой, вы ничего не сможете сделать, если только вы не можете заставить свою службу хостинга изменять конфигурацию для вас. Какую конфигурацию вы ставите в файле .htaccess, или же служба хостинга даже запрещает это и разрешает вам размещать файлы .wsgi или .py в указанных каталогах? –

+0

"только разрешить установку .wsgi или.py файлов в указанных каталогах "- точно. Я могу редактировать только файлы wsgi и .py. – kotslon

Смежные вопросы