Bottle und Hosteurope

Django, Flask, Bottle, WSGI, CGI…
Antworten
hardez
User
Beiträge: 24
Registriert: Montag 19. Oktober 2009, 16:39

Hallo Leute,
ich wollte mich mal ein bisschen mit dem Webframework Bottle beschäfftigen.
Habe dann mal meinen Webspace bei Hosteurope so eingestellt (wie die FAQs es beschreiben) damit Python ausgeführt wird.

Wenn ich z.B eine Datei (index.py) mit folgendem Inhalt:

Code: Alles auswählen

#!/usr/bin/python
print 'Content-Type: text/html\r\n\r\n'
print '<html><body>test</body></html>'
ausführe funktioniert es.

Wenn ich dann aber eine einfache Bottle Anwendung mache gehts leider nicht.
Hier der Source:

Code: Alles auswählen

#!/usr/bin/python
import bottle

bottle.debug(True)

@bottle.route('/')
def test():
    return 'test'

application = bottle.default_app()
Dann habe ich noch in einigen Beiträgen gelesen, dass man das hier noch einfügen soll

Code: Alles auswählen

sys.path = ['/is/htdocs/wp12345678_XXXXJ5I5XZ'] + sys.path
os.chdir(os.path.dirname(__file__))
Leider kommt egal was ich mache dieser Eintrag im Errorlog:
Premature end of script headers: index.py


Dann hatte ich noch nen Beitrag gefunden, wo noch sowas drinne stand:

Code: Alles auswählen

if __name__ == '__main__':
    from wsgiref.handlers import CGIHandler
    CGIHandler().run(bottle.default_app()) 
anstatt des application = bottle.default_app()

Dann kommt als Fehler:

Code: Alles auswählen

Internal Server Error

Exception:

KeyError('PATH_INFO',)

Traceback:

Traceback (most recent call last):
  File "/is/htdocs/wp10472298_TZJNJ5I5XZ/www/bottle.py", line 650, in _handle
    callback, args = self._match(environ)
  File "/is/htdocs/wp10472298_TZJNJ5I5XZ/www/bottle.py", line 505, in _match
    handle, args = self.router.match(environ)
  File "/is/htdocs/wp10472298_TZJNJ5I5XZ/www/bottle.py", line 303, in match
    targets, urlargs = self._match_path(environ)
  File "/is/htdocs/wp10472298_TZJNJ5I5XZ/www/bottle.py", line 321, in _match_path
    path = environ['PATH_INFO'] or '/'
KeyError: 'PATH_INFO'

Ich weiß echt nicht mehr was ich noch ausprobieren kann.

Ach so bei Hosteurope ist Python 2.5 installiert und Bottle is Version 0.9.2

EDIT:
Es ist nur Webspace, kein vServer! Ich kann also nicht an der Apache Konfiguration rumbasteln!
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Habe dann mal meinen Webspace bei Hosteurope so eingestellt (wie die FAQs es beschreiben) damit Python ausgeführt wird.
Python ausführen ist nicht gleich Python ausführen. Dein erstes, funktionierendes Beispiel ist ein CGI-Skript. Quasi die Minimallösung, die läuft.

Wenn du Bottle (oder Flask oder ...) nutzt, dann verhält sich die Sache anders. Du kannst zwar Bottle _über_ CGI laufen lassen aber nicht _als_ CGI. Wobei der "normale" Weg so wie so wäre, die Applikation über WSGI laufen zu lassen, dass ist der aktuelle Standard für Python. Da müsstest du aber nochmal in die Doku von Host Europe schauen, ob das geht, weil WSGI eine entsprechende Konfiguration des (Apache-) Servers voraus setzt.

Was jedenfalls nicht funktionieren wird ist, dass du auf deinem Webspace Python-Skripte inkl. Bottle hochlädst und das dann läuft. Jedenfalls wüßte ich nicht, wie man das anstellen sollte.

Gruß, noisefloor
deets

@noisefloor

Das geht schon, nur nicht so einfach wie man es sich wuenscht.

Im Grunde muss man nur in Python das machen, was mod_wsgi auch macht: eine komlpette WSGI-Umgebung aus CGI bauen, und die dann an das bottle-Objekt weiterleiten.

Dazu gibt's zB FLUP, und ein Rezept:

https://wiki.hostsharing.net/index.php?title=Flup

*Toll* ist das alles nicht, aber man sollte es zum laufen bekommen. Ob der OP nicht besser bedient waere mit einem "richtigen" Python-Hoster wie zB not just hosting sei dahingestellt.
Antworten