2016-09-08 29 views
0

我們正在建立基於龍捲風的uServices。有一些路線對於所有的服務都很常見,暫時是healthdocs。文檔路徑使用Swagger構建。這意味着,Swagger路線和相關資產是我們公共庫的一部分(但不是與uService相關的文檔本身),這僅僅是我們uServices的一個要求。龍捲風的幾個靜態目錄

由於swagger需要靜態資產,每個uService也需要自己的靜態資產,所以我遇到了一個問題:我的靜態資產來自兩個完全不同的地方。我已經找到了(非常不方便)黑客以解決此問題:在uService回購

  1. 在軌道靜態資產在公共回購
  2. 軌道靜態資產
  3. 部署時,複製這些靜態資產,這兩個來源,到部署靜態文件夾(希望沒有衝突)
  4. 指定部署靜態文件夾作爲static_path

第三步是相當複雜的,因爲它涉及PIP-安裝公用庫,發現資產有(已經是破解版),以及圍繞它們複製:

  • 安裝公共庫與PIP
  • 看看已安裝的庫的位置(site-packages
  • 複製靜態資產的部署靜態文件夾

這將是,如果要容易得多,與template_path發生,這將有可能有每個應用程序的靜態文件夾:

> Return None to load templates relative to the calling file. 

我一直在網上搜索,似乎this is not possible,但我想仔細檢查。

另一種方法是從打包的python模塊中簡化資源提取,但不確定什麼是首選的方法來做到這一點,而不必再次在virtualenv中搜索site-packages

回答

1

這是不可能的static_path設置要做到這一點,但只要你不要求static_url()功能,您可以在URLSpec列表創建多個StaticFileHandler條目:

Application([ 
    ('/static1/(.*)', tornado.web.StaticFileHandler, dict(path='static1')), 
    ('/static2/(.*)', tornado.web.StaticFileHandler, dict(path='static1')), 
]) 

的替代品static_url,如果您使用的是static_path,則可以撥打StaticFileHandler.make_static_url並將它傳遞給全局參數。