Python webapp2 提供静态内容



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

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

在AWS中,我们继续进行一些黑客攻击,以便使用App Engine Launcher启动Web应用程序,但现在我们想放弃它。所以,我修改了python脚本,它成功启动,但我不知道如何提供静态内容。静态文件(CSS、JS(被添加到 HTML 模板中,例如 link rel="stylesheet" type="text/css" href="{{statics_bucket}}/statics/css/shared.css"/,其中 {{statics_bucket}} 是一个环境变量,指向每个环境的特定 Amazon S3 存储桶。当然,这在本地主机上不起作用,因为例如没有人在http://localhost:8080/statics/css/shared.css上提供静态内容。Google App Engine启动器具有此功能,它完成了所有艰巨的工作。

有人可以指出实现我的目标的方法吗?

我设法使用以下脚本实现了我的目标:

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()

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

最新更新