If you haven't checked FastAPI as an alternative to Flask, take a look at it, and you'll be pleasantly surprised by how capable, modern, and cool it is.
I'm not going to talk about FastAPI here, but I'll explain how to get a simple "Hello World" application running on Google's App Engine.
For this example, I'm going to be using the App Engine's Python 3 Standard Environment. Deploying to the Flexible Environment should be very similar.
You'll need to create three files:
requirements.txt - Here, you'll list your required libraries so App Engine can prepare the environment to run your application. Here's what's needed for this file:
fastapi uvicorn gunicorn
Whether or not you specify the versions of each libraries (e.x. gunicorn==20.0.4) is not relevant now. Either way works.
Then you need an
app.yaml file. This is the configuration of your application. Here we need to specify the runtime we are going to be using, and the entry point for App Engine to provision a new instance:
runtime: python37 entrypoint: gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
uvicorn worker is the one that will allow us to run a FastAPI application. Also, notice I'm specifying that 4 workers (
-w 4) should be serving the app. This number of workers should match the instance size of your App Engine deployment, as explained in Entrypoint best practices.
Finally, we need a
main.py file containing a FastAPI object called
from fastapi import FastAPI app = FastAPI() @app.get("/") async def index(): return "Hello World!"
To deploy the application, and assuming you have the Cloud SDK installed and initialized; you can run the following command:
gcloud app deploy app.yaml
This command should deploy the application to App Engine. From there, you can visit the URL configured for your project, and you should get the
"Hello World!" text back.