Python Tornado renderizar directorio estático

Estoy tratando de servir una página desde un directorio estático utilizando la API de Tornado en Python. Esta respuesta es similar a la que estoy tratando de hacer , pero parece que no consigo que funcione.

La estructura de mi directorio se ve así (todos los archivos estáticos están dentro de una carpeta llamada web ):

estructura de archivos de directorio

Tengo una configuración de servidor web como esta:

 class Application(tornado.web.Application): def __init__(self): handlers = [ (r'/ws', WSHandler), (r'/', IndexHandler), ] settings = { "debug": True, "static_path": os.path.join(os.path.dirname(__file__), "web") } tornado.web.Application.__init__(self, handlers, **settings) http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(8888) tornado.ioloop.IOLoop.instance().start() 

Pensé esta línea:

 "static_path": os.path.join(os.path.dirname(__file__), "web") 

podría haber solucionado el problema, pero cuando index.html archivo index.html :

 class IndexHandler(tornado.web.RequestHandler): @tornado.web.asynchronous def get(self): self.render('web/index.html') 

Sirve la página como se esperaba, pero imprime este mensaje de error en la consola:

 WARNING:tornado.access:404 GET /css/reset.css (::1) 3.57ms WARNING:tornado.access:404 GET /js/lib/custom-marker.js (::1) 0.96ms WARNING:tornado.access:404 GET /js/map.js (::1) 2.08ms WARNING:tornado.access:404 GET /js/websocket-client.js (::1) 1.56ms WARNING:tornado.access:404 GET /css/index.css (::1) 0.89ms 

En este ejemplo minimalista, ¿cómo soluciono mi problema? ¿Dónde está intentando apuntar y no poder encontrar los archivos?

Cualquier ayuda que pueda ofrecer sería muy apreciada!

De acuerdo con la sección de documentación sobre archivos estáticos y almacenamiento en caché agresivo de archivos , el prefijo de las URL de “css” y “js” con “web” debería resolver su problema. Por ejemplo:

/css/reset.css debería ser /web/css/reset.css

O simplemente use la static_url recomendada en sus plantillas (si las está usando):

 {{ static_url("css/reset.css") }} 

Alternativamente, puede especificar caracteres comodín en los directorios estáticos para representar todos los archivos del directorio especificado, al mismo tiempo que inicializa la aplicación.

 app = web.Application([ (r'/', IndexHandler), (r'/js/(.*)', web.StaticFileHandler, {'path': './static/js'}), (r'/css/(.*)', web.StaticFileHandler, {'path': './static/css'}), (r'/images/(.*)', web.StaticFileHandler, {'path': './static/images'}), ]) 

El código anterior asignará todas las URL estáticas en consecuencia,

  

se asignará a /static/js dir,

 (r'/js/(.*)', web.StaticFileHandler, {'path': './static/js'}) 

Y así, todos los css, e imágenes a sus respectivos mapeadores,

 (r'/css/(.*)', web.StaticFileHandler, {'path': './static/css'}), (r'/images/(.*)', web.StaticFileHandler, {'path': './static/images'}),