¿Cómo manejar una solicitud GET de HTTP a un archivo en Tornado?

Estoy usando Ubuntu y tengo un directorio llamado “webchat”, debajo de este directorio hay 4 archivos: webchat.py, webchat.css, webchat.html, webchat.js.

Al crear un servidor HTTP utilizando Tornado, asigno la raíz (“/”) a mi código python: ‘webchat.py’ de la siguiente manera:

import os,sys import tornado.ioloop import tornado.web import tornado.httpserver #http server for webchat class webchat(tornado.web.RequestHandler): def get(self): self.write("Hello, chatter! [GET]") def post(self): self.write("Hello, chatter! [POST]") #create http server Handlers = [(r"/",webchat)] App_Settings = {"debug":True} HTTP_Server = tornado.web.Application(Handlers,**App_Settings) #run http server HTTP_Server.listen(9999) tornado.ioloop.IOLoop.instance().start() 

Accediendo a http: // localhost: 9999 me llevará al controlador ‘webchat’ (clase webchat). Sin embargo, quiero acceder a los otros archivos en el mismo directorio con ‘webchat.py’, que son webchat.css, webchat.html y webchat.js.

Esta URL me da 404: http: // localhost: 9999 / webchat.html . ¿Alguna posible solución a este asunto?

Tornado tiene un controlador de archivos estáticos predeterminado, pero asigna la url a / static /, ¿estará bien si debe acceder a su archivo estático en /static/webchat.css?

Si está de acuerdo con esto, le sugiero encarecidamente que maneje el archivo estático de esta manera.

Si desea que su archivo estático se encuentre en la ruta raíz, eche un vistazo a web.StaticFileHandler.

En caso de que te lo perdieras, aquí está el ejemplo.

 (r"/static/(.*)", web.StaticFileHandler, {"path": "/var/www"}), 

BTW, File_Name y Handlers no se consideran buenos nombres de variables en Python.

Solución para una solicitud de archivo simple con solo nombre de archivo y ruta relativa:

(1) Asigne un patrón al URL del controlador:

 Handlers = [(r"/(.*)",webchat)] 

(2) Pase el parámetro presentado por (. *) A los métodos ‘obtener’ y ‘publicar’:

 def get(self,File_Name): File = open(File_Name,"r") self.write(File.read()) File.close() def post(self,File_Name): File = open(File_Name,"r") self.write(File.read()) File.close()