python
  • google-app-engine
  • bottle
  • 2015-03-25 82 views 3 likes 
    3

    我正在使用Google App Engine和bottle.py,並試圖在用戶訪問/時提供靜態HTML文件。爲此我有這個在我的main.py使用Google App Engine和瓶子提供靜態HTML

    bottle = Bottle() 
    
    @bottle.route('/') 
    def index(): 
        """Serve index.html.""" 
        return static_file('index.html', root='/static') 
    

    我也有我的app.yaml如下:

    handlers: 
    - url: /favicon\.ico 
        static_files: static/favicon.ico 
        upload: static/favicon\.ico 
    - url: /static 
        static_dir: static 
        application-readable: true 
    - url: /.* 
        script: main.bottle 
    

    的圖標和CSS文件(無論是在static目錄)用於精細,雖然沒有直接供應。但是,去/會導致404錯誤。我對bottle.route以及app.yaml應該做什麼我應該做些什麼感到困惑。

    爲了完整起見,我的目錄結構是這樣的:

    src 
    +-- main.py 
    +-- app.yaml 
    +-- static 
        +-- favicon.ico 
        +-- index.html 
        +-- stylesheet.css 
    +-- [other unimportant files] 
    

    回答

    3

    爲靜態文件在App Engine中,這是迄今爲止最有效的(爲你的用戶提供更快,更便宜,如果你通過免費的每日限額),以如此直接從app.yaml做 - 只需添加

    - url:/
        static_files: static/index.html 
    

    到了 「一攬子」 url: /.*指令之前app.yaml

    這樣,你的應用程序不會排隊等待其他人可能在等待的靜態文件請求,也不需要啓動和預熱新實例,也不需要運行任何代碼 - 它只會將Google靜態文件提供給用戶,就像Google知道如何(包括緩存和幕後的CDN加速)一樣快(如果適用)。

    如果您可以輕鬆利用Google自己的服務基礎架構,真的沒有理由從代碼提供靜態文件!

    +0

    謝謝,這工作。但是需要添加'upload:static/index.html'到'app.yaml'。旋轉一個實例等並沒有超出我的想法。你懂得越多。 – Whonut 2015-03-25 10:38:15

    0

    下面的代碼應該工作。

    bottle = Bottle() 
    
    @bottle.route('/') 
    def index(): 
        """Serve index.html.""" 
        return static_file('index.html', root=os.path.join(os.path.dirname(os.path.realpath(__file__)), "/static")) 
    
    相關問題