应用实例:
应用版本:
app.yaml:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /my_uri
script: path.to.my.script.script.app
我使用Google App Engine创建了一个Python Flask应用程序。我最初遇到了一些问题,所以我重新部署了应用程序。这创建了一个新版本。执行此操作后,我删除了先前已部署一个实例的现有版本。当前部署的版本没有部署实例,您可以在上面链接的图像中看到。
当我向my-app-ID.appspot.com/my_uri提交请求时,收到404错误:
错误:未找到
在此服务器上找不到请求的URL / my_uri。
我认为这与我的app没有部署实例有关。那是对的吗?如果是这样,我该如何解决这个问题?
如果没有,可能导致404问题的原因是什么?
谢谢大家!
答案 0 :(得分:2)
正如您的错误消息指示gcloud app browse
向您的应用发出/
网址请求。
当App Engine收到您的应用程序的Web请求时,它会调用 与URL对应的处理程序脚本,如中所述 应用程序的
[app.yaml][2]
配置文件。 Python 2.7 运行时支持WSGI standard和CGI standard 向后兼容性。 WSGI是首选,并且具有一些功能 如果没有它,Python 2.7就无法工作。你的配置 应用程序script handlers确定请求是否是 使用WSGI或CGI处理。
但是您的app.yaml
文件不包含具有匹配网址格式的处理程序(因为/
与/my_uri
不匹配),因此GAE不知道哪个要为该请求启动的应用脚本,因此它将返回404.
因此,您要做的第一件事就是在app.yaml
中添加一个处理程序,其中包含与/
请求匹配的网址格式。
您可能需要浏览Getting Started with Flask on App Engine Standard Environment指南。在那里推荐的处理程序将是:
handlers: - url: /.* script: main.app
仅凭上述内容并不一定能使您的应用程序正常运行,还有很多其他可能出错的事情。您应该熟悉应用程序的日志查看器,因为这对于调试应用程序至关重要。见Understanding request log fields
但在您进入GAE部署之前,请先了解如何在本地运行和测试您的应用。见Using the Local Development Server