Python webapp2 提供静态内容
Python webapp2 serve 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"/,其中 {{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()
该脚本启动云应用程序以及一个提供静态文件的组件,两者都在同一服务器内的同一端口上。
我们的团队将一个项目从 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"/,其中 {{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()
该脚本启动云应用程序以及一个提供静态文件的组件,两者都在同一服务器内的同一端口上。