Я пытаюсь использовать 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 на локальном компьютере и на сервере. И он все еще не работает на сервере!
WSGIApplicationGroup% {GLOBAL} должен быть использован в апача файле .conf? Но я не могу связаться с конфигурацией apache на виртуальном хостинге :( – kotslon
Если проблема с суб-интерпретатором является проблемой, вы ничего не сможете сделать, если только вы не можете заставить свою службу хостинга изменять конфигурацию для вас. Какую конфигурацию вы ставите в файле .htaccess, или же служба хостинга даже запрещает это и разрешает вам размещать файлы .wsgi или .py в указанных каталогах? –
"только разрешить установку .wsgi или.py файлов в указанных каталогах "- точно. Я могу редактировать только файлы wsgi и .py. – kotslon