如何通过Cloud SDK shell在Google Cloud运行Python本地服务并排查报错
问题排查与解决方案
错误根因
- YAML配置存在语法与兼容性问题
runtime:python37键与值之间缺少空格,不符合YAML语法要求handlers;末尾错误使用分号,应改为英文冒号handlers:- 字段不兼容Python3运行时:Python3.7及以上版本的App Engine标准环境无需配置
api_version、threadsafe参数,且handlers下的script字段仅支持auto取值,不支持直接指定.py脚本
- 代码不符合服务运行规范:Google Cloud App Engine的Python3运行时要求代码遵循WSGI接口规范,直接执行print语句无法作为web服务返回HTTP响应
修复步骤
1. 修改YAML配置(默认文件名为app.yaml)
runtime: python37 handlers: - url: / script: auto
2. 调整业务代码
方案A:使用Flask框架(推荐)
修改test.py内容如下:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'hello world' if __name__ == '__main__': app.run(host='127.0.0.1', port=8080, debug=True)
新增requirements.txt文件,声明依赖:
Flask==2.0.3 Werkzeug==2.0.3
方案B:原生WSGI实现(无需第三方依赖)
直接修改test.py内容如下即可:
def app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return [b'hello world']
3. 本地运行测试
首先安装依赖(仅方案A需要执行):
pip install -r requirements.txt
启动本地服务:
python test.py
如果需要模拟App Engine环境本地运行,可执行命令:
dev_appserver.py app.yaml
关联素材
操作示意图:
报错截图:
内容的提问来源于stack exchange,提问作者Naveen kumar
相关产品推荐
相关产品推荐

