wsgi resourcen übertragen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Volvic
User
Beiträge: 30
Registriert: Donnerstag 14. Juni 2007, 05:18

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?
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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
TUFKAB – the user formerly known as blackbird
Antworten