在没有任何 Python 脚本的情况下使用 App Engine Python 37 提供静态文件
Serving static files with App Engine Python 37 without any Python script
使用 App Engine Python27(标准环境),可以创建一个仅提供来自 app.yaml
的静态资源的网络应用程序。没有编写任何 Python 脚本。
使用 Python37(标准环境),我发现 app.yaml
的 handlers
部分仍然可以包含 static_dir
,但我想知道如果这将以相同的方式工作。因为我没有定义任何入口点,所以我没有设置网络服务器。我现在只有app.yaml
。
目前第一个阻碍我的是:如果这样做,我如何在本地 运行 这个应用程序? (没有 Python 脚本,所以 python main.py
和 dev_appserver.py
不适用于 Python37)。
感谢您的回答
是的,static_dir
和 static_file
配置的工作方式相同,它们在 2.7 and 3.7 的 app.yaml 参考文档中的部分除了对2.7 特定的 application_readable
选项。
由于在 GAE 上提供静态内容是相同的(静态内容是与应用程序代码分开上传和提供的 - 如果您愿意,等同于从 CDN 提供服务)如果您是使用 2.7 运行时或 3.7 运行时 - 你实际上并没有执行任何 python 代码,对吧?
所以一个选择是只使用 2.7(添加一个最小的应用程序框架来保持运行时的快乐,比如只返回 404 或重定向到一个静态页面 - 你可以从 Quickstart).然后就可以继续使用2.7开发服务器本地执行了
另一种选择是仅将 2.7(如选项 1)用于本地开发,但切换回 3.7 进行部署(即更新 app.yaml
文件,删除骨架应用程序代码或将其更新为3.7).有点繁琐和脆弱,但可以做到。
第三个选项是尝试更新的开发服务器,它对 3.7 的支持有限,请参阅 . Serving static content might be included in that limited support. You'd need to meet its specific requirements. You'd also need a 3.7-compatible skeleton app, you can get one from the 3.7 Quickstart。
最后,如果您有的话,您还可以在开发过程中在本地使用其他工具(与 running an actual app locally 的建议相同)。它可能只是您的静态内容的浏览器 :) 同样,目标只是开发您的静态内容,GAE 将以相同的方式提供服务。在这种情况下,您不需要任何框架应用程序。
旁注:我在 Node.js standard env app.yaml reference 中看到了这个,不确定它是否也适用于 python 3.7,请注意:
In order to use static handlers, at least one of your handlers must
contain the line script: auto to deploy successfully.
使用 App Engine Python27(标准环境),可以创建一个仅提供来自 app.yaml
的静态资源的网络应用程序。没有编写任何 Python 脚本。
使用 Python37(标准环境),我发现 app.yaml
的 handlers
部分仍然可以包含 static_dir
,但我想知道如果这将以相同的方式工作。因为我没有定义任何入口点,所以我没有设置网络服务器。我现在只有app.yaml
。
目前第一个阻碍我的是:如果这样做,我如何在本地 运行 这个应用程序? (没有 Python 脚本,所以 python main.py
和 dev_appserver.py
不适用于 Python37)。
感谢您的回答
是的,static_dir
和 static_file
配置的工作方式相同,它们在 2.7 and 3.7 的 app.yaml 参考文档中的部分除了对2.7 特定的 application_readable
选项。
由于在 GAE 上提供静态内容是相同的(静态内容是与应用程序代码分开上传和提供的 - 如果您愿意,等同于从 CDN 提供服务)如果您是使用 2.7 运行时或 3.7 运行时 - 你实际上并没有执行任何 python 代码,对吧?
所以一个选择是只使用 2.7(添加一个最小的应用程序框架来保持运行时的快乐,比如只返回 404 或重定向到一个静态页面 - 你可以从 Quickstart).然后就可以继续使用2.7开发服务器本地执行了
另一种选择是仅将 2.7(如选项 1)用于本地开发,但切换回 3.7 进行部署(即更新 app.yaml
文件,删除骨架应用程序代码或将其更新为3.7).有点繁琐和脆弱,但可以做到。
第三个选项是尝试更新的开发服务器,它对 3.7 的支持有限,请参阅
最后,如果您有的话,您还可以在开发过程中在本地使用其他工具(与 running an actual app locally 的建议相同)。它可能只是您的静态内容的浏览器 :) 同样,目标只是开发您的静态内容,GAE 将以相同的方式提供服务。在这种情况下,您不需要任何框架应用程序。
旁注:我在 Node.js standard env app.yaml reference 中看到了这个,不确定它是否也适用于 python 3.7,请注意:
In order to use static handlers, at least one of your handlers must contain the line script: auto to deploy successfully.