配置Google App Engine以提供JS客户端应用程序

时间:2019-08-23 13:30:04

标签: google-app-engine flask google-cloud-platform

我有一个基本的flask应用,该应用使用flask_restful扩展名(用于提供宁静的服务):

main.py

from google.cloud import datastore
from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

datastore_client = datastore.Client()

class HelloWorld(Resource):
    def get(self):
        # retrieve from datastore here
        return {'greeting': 'hello'}

api.add_resource(HelloWorld, '/greet')

通常,flask应用将呈现如下模板:

@app.route('/')
def home():
    return render_template("index.html")

默认情况下,flask将从以下位置检索index.html:  templates/index.html目录。

但是,当访问/路线时,我不想呈现模板。相反,我想在应用程序引擎项目内完全不同的目录中提供JS客户端应用程序(Angular,React,Vue):

my-gae-project/
    app.yaml
    main.py
    main_test.py
    requirements.txt
    app/          <--- JS app lives here; consumes flask restful api
        src/
            index.html
            script.js
            style.js
        build/
            index.html

起初,我认为这就像修改app.yaml文件以指向app/子目录一样简单:

runtime: python37

handlers: 

- url: /static
  static_dir: static

- url: /app
  static_dir: app

- url: /.*      <--- route all requests to '/' to app.index.html
  script: app/index.html

但这不起作用。那么,如何在GAE中为使用烧瓶其余API的JS客户端提供服务呢?

1 个答案:

答案 0 :(得分:0)

在App Engine上的生产中不建议这样做,您可以决定是否要使用Python Flask或JS(React,Angular,Vue)开发整个应用程序。

对此的最佳解决方案是将您的应用程序划分为在GAE上运行的two services.