невозможно загрузить конфигурацию из uwsgi при попытке запустить приложение flask через uwsg - PullRequest
0 голосов
/ 10 января 2020

У меня есть следующий файл uwsgi app.ini:

[uwsgi]
wsgi-file = wsgi.py
callable = app
socket = :5000
processes = 5
threads = 2
master = true
chmod-socket = 660
vacuum = true
die-on-term = true

wsgi.py content:

from app import start

start()

и, наконец, app.py, который является Flask приложением (довольно долго, поэтому я поставлю только соответствующие):

# instantiate the app
app = Flask(__name__, static_url_path='', static_folder='static', template_folder='templates')
app.config.from_object(__name__)

# enable CORS
CORS(app, resources={r'/*': {'origins': '*'}})


@app.route('/')
def index():
    return render_template('index.html')


... all sort of methods here ...


def start():
    print("STARTING !!!")
    app.run(host='0.0.0.0')


if __name__ == '__main__':
    start()

все файлы находятся в одной папке. когда я бегу uwsgi app.ini Я получаю это:

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
unable to load configuration from uwsgi

почему это?

Спасибо за любую помощь

1 Ответ

1 голос
/ 10 января 2020

Быстрый просмотр показывает две проблемы. Во-первых, uwsgi и app.run() не совместимы. Вы используете последнее, когда используете среду разработки Flask. uwsgi хочет объект, который содержит экземпляр Flask. По соглашению это app, хотя вы можете использовать другое имя (и настроить uwsgi для поиска другого имени).

И это вторая проблема. uwsgi загрузил wsgi.py (вызывая app.run(), который дает вам большую часть того, что вы видите. Затем он ищет app. Но поскольку вы импортируете из app, app, который wsgi.py не имеет экземпляра Flask.

Простым способом (в uwsgi.ini) является замена

file=wsgi.py

на

module=app:app

Это должно обойти вызов start(), позволяя uwsgi обрабатывать вещи.

...