女服务员+烧瓶+ gcloud如何设置服务器

时间:2020-01-15 05:19:39

标签: python-3.x google-app-engine flask gcloud waitress

过去几天,我一直在尝试将基本应用部署到google引擎应用中(因为Azure是一种勒索行为),我了解到Gunicode在Windows系统上不起作用,替代方法是服务生。在发布此问题之前,我先阅读了与该主题相关的所有答案!

因此,我一直在尝试不同的设置,阅读了有关它的信息,但仍然无法使其运行。我的领域是数据科学,但是如今部署似乎是必须的。如果有人可以帮助我,将不胜感激。

app.py文件

from flask import Flask, render_template, request
from waitress import serve


app = Flask(__name__)

@app.route('/')
def index():
    name = request.args.get("name")
    if name == None:
        name = "Reinhold"
    return render_template("index.html", name=name)

if __name__ == '__main__':
    #app.run(debug=True)
    serve(app, host='0.0.0.0', port=8080)

Gcloud应用程序部署将在app.yaml文件中寻找用于启动部署的gunicode,我在那里尝试了不同的设置,最后我将其设置为None,因为Flask会在我的拙劣视图中寻找替代方案。尽管我仍然认为在那儿设置服务员服务器会更好。

app.yaml文件

runtime: python37
#entrypoint: None
entrypoint: waitress-serve --listen=*:8080 serve:app

GCloud还将寻找一个appengine_config.py文件,它将在其中找到依赖项(我认为)

from google.appengine.ext import vendor

vendor.add('venv\Lib')

requirements.txt文件如下:

astroid==2.3.3
autopep8==1.4.4
Click==7.0
colorama==0.4.3
dominate==2.4.0
Flask==1.1.1
Flask-Bootstrap==3.3.7.1
Flask-WTF==0.14.2
isort==4.3.21
itsdangerous==1.1.0
Jinja2==2.10.3
lazy-object-proxy==1.4.3
MarkupSafe==1.1.1
mccabe==0.6.1
pycodestyle==2.5.0
pylint==2.4.4
six==1.13.0
typed-ast==1.4.1
visitor==0.1.3
waitress==1.4.2
Werkzeug==0.16.0
wrapt==1.11.2
WTForms==2.2.1

在Google控制台中,我可以访问日志视图以查看部署过程中出了什么问题,这就是我在此处共享的代码所得到的。

{
 insertId: "5e1e9b4500029d71f92c1db9"  
 labels: {…}  
 logName: "projects/bokehflaskgcloud/logs/stderr"  
 receiveTimestamp: "2020-01-15T04:55:33.288839846Z"  
 resource: {…}  
 textPayload: "/bin/sh: 1: exec: None: not found"  
 timestamp: "2020-01-15T04:55:33.171377Z"  
}

如果有人可以帮助解决此问题,那将非常好,因为Google似乎是部署某些工作的不错选择。 Azure和VScode具有良好的交互性,因此在此部署它并不困难,但是在试用后的成本却很疯狂。

这就是我尝试部署应用程序后得到的。

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

2 个答案:

答案 0 :(得分:0)

  1. appengine_config.py在Python 3中未使用。Python2运行时使用此文件来安装客户端库,并提供常量和“挂钩函数”的值。 Python 3运行时不使用此文件。

  2. app.py文件没有提及flask库

请在第2行添加以下导入。

from flask import Flask, request, render_template

答案 1 :(得分:0)

使用Gunicorn轻松运行烧瓶应用程序:

runtime: python37
entrypoint: gunicorn -b :$PORT main:app

您需要在 requirments.txt

中添加 gunicorn

检查this documentation,了解如何在python 3中定义应用程序启动

如果要在本地测试应用,请确保使用flask run方法运行应用:

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)