LINUX.ORG.RU

nginx + uwsgi + bottle.py


0

2

При попытке зайти на любой url получаю: Error 500: Internal Server Error

Exception:

KeyError('PATH_INFO',)

Traceback:

Traceback (most recent call last): File «/home/user/pydev/bottle/env/lib/python2.6/site-packages/bottle.py», line 734, in _handle route, args = self.router.match(environ) File «/home/user/pydev/bottle/env/lib/python2.6/site-packages/bottle.py», line 408, in match path, targets, urlargs = environ['PATH_INFO'] or '/', None, {} KeyError: 'PATH_INFO'

Собственно вопрос, как все это хозяйство подружить между собой?

Обновление bottle.py до последней версии из git проблему не решает, только формат ошибки немного меняется.

Такая ошибка вылетает даже на hello world, так что код наверное не причем.



Последнее исправление: one_quaker (всего исправлений: 1)
Ответ на: комментарий от yanka
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bottle import route, run, debug, default_app

debug(True)

@route('/')
def index():
    return 'Index page'

@route('/:name')
def index(name='World'):
    return '<b>Hello %s!</b>' % name

application = default_app()
one_quaker
() автор топика
Ответ на: комментарий от one_quaker

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
sys.path.insert(0, '/home/yanka/sites/indigo.loc/www')
from bottle import route, run, debug, default_app

debug(True)

@route('/')
def index():
    return 'Index page'

@route('/:name')
def index(name='World'):
    return '<b>Hello %s!</b>' % name

application = default_app()
yanka ★★
()
Ответ на: комментарий от one_quaker

Проверила на apache+mod_wsgi все работает...точка входа index.wsgi по поим настройкам ..код выше что я туда поместила

yanka ★★
()
Ответ на: комментарий от yanka

С апачем не проврял, uwsgi пускаю так:

uwsgi --socket /tmp/upload.sock --file index.py --chdir /home/user/pydev/bottle/ --pythonpath /home/user/pydev/bottle/env/lib/python2.6/site-packages/ -p2

one_quaker
() автор топика
Ответ на: комментарий от one_quaker

там речь идет о mod_cgi и по-моему под апач 1.3

yanka ★★
()
Ответ на: комментарий от yanka

Цитирую:

urlargs = environ['PATH_INFO'] or '/', None, {} KeyError: 'PATH_INFO'

Есть шанс что PATH_INFO выставлять надо ручками ибо

If you want to serve multiple applications on a single host and port, you should create a WSGI application that parses PATH_INFO to select which application to invoke for each request.

А иф ю нот вант тзысь?

demmsnt
()
Ответ на: комментарий от demmsnt

я никогда не запускала wsgi приложения под uwsgi + nginx... надо попробовать...что касается apache + mod_wsgi там все работает отлично причем я тестировала и под python 3

yanka ★★
()
Ответ на: комментарий от one_quaker

PATH_INFO это id приложения. У тебя на одном URL может жить форум в /forum галерея в /gallery и т.п. Это переменная среды которая выставляется чтоб пользуясь ей ты мог в темплейтах URL сегенрировать правильно. Если у тебя форум то PATH_INFO=/forum и так далее.

Если у тебя одно приложение то это в принципе не имеет смысла. Но WSGI сервер из реквеста откусывает PATH_INFO.

тупо сделай export PATH_INFO=/ и запусти web.py или бутылку или что ты там запусаешь. Скорее всего это в конфигах WSGI враппера

demmsnt
()
Ответ на: комментарий от one_quaker

mod_wsgi под apache развертывается элементарно , настройки хостов тоже элементарны, проблем нет аналогично, можно запускать через fastcgi , но требуется flup еще поставить, тоже отлично работает под apache

yanka ★★
()
Ответ на: комментарий от yanka

да не в этом дело. Просто у WSGI есть набор переменных среды который трактуется так. Но никто не сказал что делать если такой переменной нет. Вот. А как его выставлять проблемы враппера. В конц концов тупо определи для всей системы. Пока ты не знаешь зачем это это тебе не нужно.

demmsnt
()
Ответ на: комментарий от one_quaker

без проблем , если нужна консультация можешь списаться со мной или связаться по скайпу..я так и делаю сначала настраиваю виртуальное окружение

yanka ★★
()
Ответ на: комментарий от demmsnt

Честно признаюсь не запускала никогда через uwsgi я посмотрю на досуге как там и что самой интересно стало.

yanka ★★
()
Ответ на: комментарий от yanka

О, вопросов у меня думаю еще появится, скайп скажи :)

one_quaker
() автор топика
Ответ на: комментарий от one_quaker

или замени environ['PATH_INFO'] на environ.get('PATH_INFO','/') и забудь

demmsnt
()
Ответ на: комментарий от one_quaker

Так. Я предложил впендюрить код который в /tmp/ пишет лог и его прочитать. Ав от замена строки environ['PATH_INFO'] на environ.get('PATH_INFO','/') сделает отсутствие ключа не ошибкой.

Блин. Вы хоть немножко язык который используете и технологию подучите....

demmsnt
()
Ответ на: комментарий от one_quaker

Яж тебе не на вечно его патчить предлагаю. Попробуй и потом вернешь. Но проблема в том что окружение не встроено.

demmsnt
()
Ответ на: комментарий от one_quaker

А насчет ога исследования надо продолжить. Иногда прав нет и т.п. Иногда всякие клетки

demmsnt
()

подозреваю стандартные проблемы с настройкой nginx. крути переменные который экспортирует nginx. Тот же PATH_INFO.

true_admin ★★★★★
()
Ответ на: комментарий от yanka

nginx + uwsgi ест меньше памяти чем апач с mod_wsgi

pi11 ★★★★★
()
Ответ на: комментарий от true_admin

Пока что получилось завести с mod_wsgi (спасибо yanka), а насчет переменных в nginx не пробовал, возможно действительно в них загвоздка.

one_quaker
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.