Here's a few ideas for diagnosis:
1. Can you try printing or logging repr(os.environ) and checking for the GAE_MEMORY_MB environment variable? I just tried deploying a test app with instance_class: F4 and service: xyz, and print(repr(os.environ)) gives me something like this:
environ({'GAE_MEMORY_MB': '512', 'GAE_INSTANCE': ...etc etc...})
The python37 runtime *should* start one worker if GAE_MEMORY_MB <= 128, two if <= 256, four if <= 512, otherwise eight.
If you see 'GAE_MEMORY_MB': '512' in there but anything other than four workers starting up, I'm extremely interested in figuring out why :) Likewise if you see anything other than 512 for an F4 instance.
2. Check that you're looking at the logs for the correct service -- make sure you see "GAE Application, xyz" and not "GAE Application, Default Service" or just "GAE Application" (which combines logs from all services) in the logs viewer.
3. Once you've done those two, if nothing sticks out, you can manually configure the worker count by adding a line like this to app.yaml:
entrypoint: gunicorn main:app --workers 2 -c /config/gunicorn.py
This will start up two workers. You can also configure the number of threads per worker:
entrypoint: gunicorn main:app --threads 8 --workers 2 -c /config/gunicorn.py
(The default if you just using 'gunicorn main:app -c /config/gunicorn.py' is four workers with four threads each.)
Cheers,
Phil