Seite 1 von 1
wsgi resourcen übertragen
Verfasst: Freitag 15. Juni 2007, 09:35
von Volvic
hallo,
nachdem ich erfolgreich mit dem cherrypy wsgi server html seiten an den client sende, möchte ich nun bilder etc. auch senden. was mich stutzig macht:
Code: Alles auswählen
def my_crazy_app(environ, start_response):
print type(environ)
status = '200 OK'
response_headers = [('Content-type','text/html')]
start_response(status, response_headers)
return [html]
wsgi_apps = [('/', my_crazy_app)]
server = wsgiserver.CherryPyWSGIServer(('localhost', 8080), wsgi_apps, server_name='Ludmilla', request_queue_size=50)
if __name__ == '__main__':
server.start()
ich müsste demnach für jede extra datei sprich .jpg .gif. .css usw... eine funktion schreiben?
Verfasst: Freitag 15. Juni 2007, 09:46
von mitsuhiko
Also ich weiß nicht wie das bei CherryPy ist, aber Werkzeug und Paste bringen da WSGI Middlewares mit, die das tun:
Code: Alles auswählen
from werkzeug.utils import SharedDataMiddleware
app = SharedDataMiddleware(app, {
'/shared': '/path/to/shared/data'
})
Ich nehme an bei CherryPy gibts auch sowas.
Re: wsgi resourcen übertragen
Verfasst: Freitag 15. Juni 2007, 09:57
von gerold
Volvic hat geschrieben:möchte ich nun bilder etc. auch senden.
Hallo Volvic!
Willkommen im Python-Forum!
CherryPy macht das über ``tools.staticdir``. Damit kannst du genau festlegen, welcher Ordner statische Dateien enthält oder auch einzelne statische Dateien für die Auslieferung markieren.
Hier zeige ich auf, wie das funktioniert:
http://gelb.bcom.at/trac/misc/wiki/Tuto ... ausliefern
Noch etwas: CherryPy-Applikationen sind WSGI-Anwendungen. Du musst also nicht auf diese tiefe WSGI-Ebene runter steigen, nur um WSGI als Schnittstelle zu verwenden.
Du kannst auf alle Vorzüge von CerryPy zugreifen und trotzdem WSGI-kompatibel bleiben.
Siehe:
http://www.cherrypy.org/wiki/WSGI und
http://www.cherrypy.org/wiki/WSGIServeM ... plications
Edit:
Hier noch ein Beispiel:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import cherrypy
from cherrypy import wsgiserver
class MyCrazyApp(object):
def index(self):
return "Ich bin OK"
index.exposed = True
cpwsgiapp = cherrypy.Application(MyCrazyApp(), '/')
wsgi_apps = [('/', cpwsgiapp)]
server = wsgiserver.CherryPyWSGIServer(('localhost', 8080), wsgi_apps, server_name='Ludmilla', request_queue_size=50)
if __name__ == '__main__':
cherrypy.engine.start(blocking=False)
server.start()
mfg
Gerold
Re: wsgi resourcen übertragen
Verfasst: Freitag 15. Juni 2007, 12:26
von mitsuhiko
gerold hat geschrieben:Noch etwas: CherryPy-Applikationen sind WSGI-Anwendungen. Du musst also nicht auf diese tiefe WSGI-Ebene runter steigen, nur um WSGI als Schnittstelle zu verwenden.
Du kannst auf alle Vorzüge von CerryPy zugreifen und trotzdem WSGI-kompatibel bleiben.
Was ja auch der Sinn der Sache ist