我们正在建立基于龙卷风的uServices。所有uServices都有一些共同的路由,暂时为health
和docs
。 docs路由使用Swagger
构建。这意味着,swagger路由和相关资产是我们公共库的一部分(但不是文档本身,与uService相关),这只是我们的uServices的一个要求。
由于swagger需要静态资产,并且每个uService也需要自己的静态资产,所以我遇到了一个问题:我的静态资产来自两个完全不同的地方。我找到了一个(非常不方便)的黑客来解决这个问题:
static_path
第3步非常复杂,因为它涉及到pip安装公共库,在那里找到资产(已经是黑客),并复制它们:
site-packages
)如果像template_path
一样,那么就可以拥有一个每个应用程序的静态文件夹:
> Return None to load templates relative to the calling file.
我一直在网上搜索,似乎this is not possible,但我想仔细检查。
另一种方法是简化从打包的python模块中提取资产,但不确定执行此操作的首选方法是什么,而不必在virtualenv
中针对site-packages
重复搜索
答案 0 :(得分:1)
使用static_path
设置无法执行此操作,但只要您不需要static_url()
功能,就可以在URLSpec列表中创建多个StaticFileHandler
条目:
Application([
('/static1/(.*)', tornado.web.StaticFileHandler, dict(path='static1')),
('/static2/(.*)', tornado.web.StaticFileHandler, dict(path='static1')),
])
作为static_url
的替代,您可以调用StaticFileHandler.make_static_url
并向其传递使用static_path
时可能是全局的参数。