使用 gcloud 部署我的 Python Web 应用程序时出现服务器错误 500

Server Error 500 When Using gcloud to deploy my Python Web App

在关注 freecampcode 的网络应用程序 tutorial, creating my own Google Cloud SDK project and deploying my sample social network website using Python and Flask (which I found mostly thought this tutorial) 之后,我得到了同样的错误:Internal/Unknown Server Error 500,它看起来像:

Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.

检查日志,我得到错误:

-2020-07-06 01:51:29 default[20200705t214944]  "GET / HTTP/1.1" 500
-2020-07-06 01:51:32 default[20200705t214944]  "GET /favicon.ico HTTP/1.1" 500

如有任何帮助,我们将不胜感激。我在这个问题上停留了一段时间。如果您需要有关该项目的更多信息,请告诉我。这是我的第一个 gcloud 项目。

编辑:我检查了错误日志并看到错误:

ImportError: No module named main
    at LoadObject (/base/alloc/tmpfs/dynamic_runtimes/python27g/174489198b39d9fb/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py:85)
at _LoadHandler (/base/alloc/tmpfs/dynamic_runtimes/python27g/174489198b39d9fb/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py:311)
at Handle (/base/alloc/tmpfs/dynamic_runtimes/python27g/174489198b39d9fb/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py:240)

所以我添加了文件main.py,内容为:

from app.wsgi import main as app

entrypoint: gunicorn -b :$PORT app.wsgi:main

我仍然遇到相同的内部错误。

一种方法是尝试关闭 DEBUG 模式

如果它仍然不起作用,请尝试以下方法,您将获得出现此错误的确切原因

试一下它会return准确的错误

@app.errorhandler(500)
  def internal_server_error(e):
    return jsonify(error=str(e)), 500

我注意到教程 1 (this one) contain how-to for python2, while the 2nd tutorial (this one) 是如何构建 python3。

还有什么python2不再受支持,所以没有必要学习如何使用它。这是 reference.

我想您必须更改 app.yaml 文件中的环境。 Here 是对 python3 环境的引用。我会从那个开始。

我也推荐你去Google云平台打开App Engine(直接link)。在右侧,您可以选择名为“App Engine Quickstart”或“Hello World”的教程。您可以选择 Python 并完成创建 HelloWorld 应用程序的整个过程,顺便说一下,这也是 Flask。我什至会在你尝试之前尝试一下。

希望对您有所帮助!