Колба "(" неожиданная ошибка при использовании gunicorn - PullRequest
0 голосов
/ 27 января 2019

Я пытался развернуть свое приложение фляги, используя gcloud, gunicorn.Но когда я написал app.yaml, как показано ниже, он не работал.

Вот мой файл app.yaml.

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT flask_todo:create_app

runtime_config:
  python_version: 3

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

init .py file

import os
from flask import Flask,render_template,request,url_for,redirect
from . import db


def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        app.config.from_pyfile('config.py', silent=True)

    else:
        app.config.from_mapping(test_config)


    try:
        os.makedirs(app.instance_path)

    except OSError:
        pass
    return app

flask_todo # это то место, куда я могу перейти и запустить gunicorn flask_todo: create_app

flask_todo
--db.py
--__init__.py
--app.yaml
--requirements.txt

В чем причина?Пожалуйста, помогите мне ..

1 Ответ

0 голосов
/ 28 января 2019

Аргументы для gunicorn должны быть переменной в модуле, который можно импортировать, и представляет приложение WSGI.В вашем примере create_app - это функция, которая возвращает такую ​​переменную, а не саму переменную.

Должно работать что-то вроде следующего:

app.yaml:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT flask_todo:app

runtime_config:
  python_version: 3

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

__init__.py:

import os
from flask import Flask,render_template,request,url_for,redirect
from . import db


def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        app.config.from_pyfile('config.py', silent=True)

    else:
        app.config.from_mapping(test_config)


    try:
        os.makedirs(app.instance_path)

    except OSError:
        pass
    return app

app = create_app()
...