这个 Pyramid 教程似乎已经过时了。此外,我认为它适用于 App Engine 标准,因为“dev_appserver.py”命令不适用于柔性环境(请注意 app.yaml 文件中的 env:flex 标记)。
此外,通过关注Pyramid Documentation,我设法让金字塔在 App Engine Standard 上工作,类似于 Flask 应用程序:
注意你正在配置服务器的那一行,如果你使用这个方向和端口(127.0.0.1:8080),你将能够从Cloud Shell preview'本地'查看网页。
main.py 文件:
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
return Response('Hello World!')
def bye_world(request):
return Response('Bye!')
config = Configurator()
config.add_route('hello', '/')
config.add_view(hello_world, route_name='hello')
config.add_route('newHandler', '/bye')
config.add_view(bye_world, route_name='newHandler')
app = config.make_wsgi_app()
if __name__ == '__main__':
server = make_server('127.0.0.1', 8080, app)
server.serve_forever()
app.yaml:
runtime: python27
api_version: 1
service: default
threadsafe: yes
handlers:
- url: /.*
script: main.app
当您使用第三方库(金字塔)时,您 need to specify them。首先创建 requirements.txt 文件并输入以下行:
pyramid
repoze.lru
(repoze.lru 库似乎是金字塔要求)
通过 CLI 创建一个目录(在本例中命名为 lib),与其余文件的路径相同,然后安装库:
mkdir lib
pip install -t lib -r requirements.txt
此命令将安装“requirements.txt”文件中列出的所有库并将它们复制到“lib”文件夹。
现在创建一个名为 appengine_config.py 的文件,该文件将指导 App Engine 部署上传“lib”文件夹中的库,然后输入:
from google.appengine.ext import vendor
vendor.add('lib')
附带说明,您不需要对 Flask 执行此操作,因为它是 App Engine 中的一个捆绑库,因此您不需要专门上传该库。
最后要在 Cloud Shell 中“本地”测试应用程序,您可以在 CLI 中运行:
python main.py
然后在 Cloud Shell 中使用 preview function。
从 CLI 部署应用程序:
gcloud app deploy
并使用以下命令在浏览器中查看它:
gcloud app browse -s <service_name_defined_in_app.yaml>
在这个例子中,这个命令是
gcloud app browse -s default