Python webapp2提供静态内容

时间:2017-08-21 13:36:08

标签: python webapp2 static-content

我们的团队将项目从GAE迁移到AWS。一个组件是构建在webapp2之上的Web应用程序,该框架易于与GAE集成。我们也在AWS中保留了webapp2框架,并进行了一些小的改动以使其工作。

Web应用程序在云中运行良好,但我也想找到一种方法在本地开发机器上运行它。当我们使用GAE环境时,这是一项简单的任务,因为Google提供了App Engine Launcher,这是一种可以非常好地模拟云环境的工具。

在AWS中,我们继续制作一些黑客攻击,以便使用App Engine Launcher启动Web应用程序,但现在我们要丢弃它。所以,我修改了python脚本并且它成功启动但我不知道如何提供静态内容。静态文件(CSS,JS)被添加到HTML模板,如 link rel =“stylesheet”type =“text / css”href =“{{statics_bucket}} / statics / css / shared.css”/ < / strong>,其中{{statics_bucket}}是一个环境变量,指向每个环境的特定Amazon S3存储桶。当然,这不适用于localhost,因为没有人在 http://localhost:8080/statics/css/shared.css 上提供静态内容。谷歌应用引擎启动器具有此功能,它完成了所有艰苦的工作。

有人能指出实现目标的方法吗?

1 个答案:

答案 0 :(得分:1)

我设法通过以下脚本实现了我的目标:

import os.path
import application

from paste import httpserver
from paste.cascade import Cascade
from paste.urlparser import StaticURLParser

def main():
    web_client = application.application
    here = os.path.dirname(os.path.abspath(__file__))
    static_app = StaticURLParser(here)

    app = Cascade([web_client, static_app])
    httpserver.serve(app, host='localhost', port='8080')

if __name__ == '__main__':
    main()

该脚本启动云应用程序以及同一服务器内同一端口上提供静态文件的组件。