Come fumanchu accennato, è possibile creare diverse sottosezioni al tuo sito con più chiamate a cherrypy.tree.mount
. Qui di seguito è una versione semplificata di un sito che sto lavorando su questo consiste sia una web app front-end e un API riposante:
import cherrypy
import web
class WebService(object):
def __init__(self):
app_config = {
'/static': {
# enable serving up static resource files
'tools.staticdir.root': '/static',
'tools.staticdir.on': True,
'tools.staticdir.dir': "static",
},
}
api_config = {
'/': {
# the api uses restful method dispatching
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
# all api calls require that the client passes HTTP basic authentication
'tools.authorize.on': True,
}
}
cherrypy.tree.mount(web.Application(), '/', config=app_config)
cherrypy.tree.mount(web.API(), '/api', config=api_config)
# a blocking call that starts the web application listening for requests
def start(self, port=8080):
cherrypy.config.update({'server.socket_host': '0.0.0.0', })
cherrypy.config.update({'server.socket_port': port, })
cherrypy.engine.start()
cherrypy.engine.block()
# stops the web application
def stop(self):
cherrypy.engine.stop()
Creazione di un'istanza di WebService
inizializza due diverse applicazioni web. La prima è la mia applicazione front-end, che vive a web.Application
e verrà pubblicata allo /
. La seconda è la mia API riposante, che vive a web.API
e verrà pubblicata allo /api
.
Le due viste hanno anche diverse configurazioni. Ad esempio, ho specificato che l'API utilizza l'invio del metodo e che l'accesso ad esso è regolato dall'autenticazione HTTP di base.
Dopo aver creato un'istanza di WebService
, è possibile richiamare l'avvio o l'arresto su di esso in base alle esigenze e si occupa di tutte le operazioni di pulizia.
Cose davvero interessanti.
Buona risposta. Solo per aggiungere: puoi anche chiamare cherrypy.tree.mount tutte le volte che vuoi per aggiungere gestori. Il secondo link – fumanchu
dà un 403 – Nate