Python 2.7 如何在Tornado中处理带有多个静态文件夹的静态文件处理程序?
我当前的路由表如下所示:Python 2.7 如何在Tornado中处理带有多个静态文件夹的静态文件处理程序?,python-2.7,url-routing,tornado,file-handling,Python 2.7,Url Routing,Tornado,File Handling,我当前的路由表如下所示: routing_table = [ ("/api/ping", PingHandler), ("/css/(.*)", StaticFileHandler, { "path": "my-website-path/css" }), ("/js/(.*)", StaticFileHandler, { "path": "my-website-path/js"
routing_table = [
("/api/ping", PingHandler),
("/css/(.*)", StaticFileHandler, {
"path": "my-website-path/css"
}),
("/js/(.*)", StaticFileHandler, {
"path": "my-website-path/js"
}),
("/fonts/(.*)", StaticFileHandler, {
"path": "my-website-path/fonts"
})
我只想使用一个正则表达式来处理静态文件。
像下面这样的
routing_table = [
("/api/ping", PingHandler),
("/(css|js|fonts)/(.*)", StaticFileHandler, {
"path": "my-website-path/$1"
})
我该怎么做?
提前感谢。A
RequestHandler
将所有匹配项作为位置参数传递给http谓词函数。由于StaticFileHandler
扩展了它,并且您有两个捕获的组,因此您的代码将无法按预期工作。因此,需要逐步更改正则表达式:
/(.*)
((jss | css |字体)/.*
((?:jss | css |字体)/.*
routing_table = [
("/api/ping", PingHandler),
("/((?:css|js|fonts)/.*)", StaticFileHandler, {
"path": "my-website-path"
}
请记住,(正如@cricket_007所提到的) 此处理程序主要用于开发和轻型文件服务;对于高流量,使用专用静态文件服务器(如nginx或Apache)将更有效。我们支持HTTP接受范围机制来返回部分内容(因为有些浏览器要求在HTML5音频或视频中提供此功能)
RequestHandler
将所有匹配项作为位置参数传递给http谓词函数。由于StaticFileHandler
扩展了它,并且您有2个捕获的组,因此您的代码无法按预期工作。因此需要逐步更改正则表达式:
/(.*)
((jss | css |字体)/.*
((?:jss | css |字体)/.*
routing_table = [
("/api/ping", PingHandler),
("/((?:css|js|fonts)/.*)", StaticFileHandler, {
"path": "my-website-path"
}
请记住,(正如@cricket_007所提到的) 此处理程序主要用于开发和轻型文件服务;对于高流量,使用专用静态文件服务器(如nginx或Apache)将更有效。我们支持HTTP接受范围机制来返回部分内容(因为有些浏览器要求在HTML5音频或视频中提供此功能)
也许可以尝试子类化StaticFileHandler来指定您想要的文件夹……我很确定tornado routes支持regex,但是使用Nginx/Apache来服务静态资产将是一个更好的主意,如果没有其他解决方案,我将子类化StaticFileHandler。tornado routes肯定支持regex,我更喜欢Torna自行处理项目的所有文件。也许可以尝试将StaticFileHandler子类化,以手动指定所需的文件夹…我非常确定tornado routes支持正则表达式,但使用Nginx/Apache来服务静态资产将是一个更好的主意,如果没有其他解决方案,我将对StaticFileHandler子类化。tornado routes支持当然是rt regex,我更喜欢Tornado自己处理所有项目的文件。别担心,我知道,但我不会有大量的流量。谢谢你的帮助。它像一个符咒一样工作;)别担心,我知道,但我不会有大量的流量。谢谢你的帮助。它像一个符咒一样工作;)