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 :D