Почему Python Flask приложение рендерится только после второго перезапуска? - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в Python Flask. Я хочу, чтобы мое приложение Python запускало веб-сервер (и части приложения Flask) только по желанию пользователя во время выполнения. В противном случае приложение должно просто запустить программу на терминале. Я использовал следующий код.

Пользователь, выбравший опцию «1», работает нормально - программа запускается до конца без запуска веб-сервера.

Однако, если пользователь выбирает опцию «2» ниже - все приложение перезапускается , снова запрашивая тот же пользовательский ввод. Страница html также не отображается на этом этапе. Только если пользователь выберет опцию «2» сейчас во второй раз, мы получим работающий локальный веб-сервер и html webpage localhost: 5000 / index отобразит, как и ожидалось.

( Пользователь выбирает опцию «2», а затем при перезапуске выбирает опцию «1» - заканчивается, когда программа терминала и веб-страница никогда не рендерится)

Как пользователь может выбрать опцию «2» только один раз и создать компонент веб-приложения запустить? Почему этот app.run() выполняется дважды для запуска веб-приложения?

import flask

app = flask.Flask(__name__)
app.config["DEBUG"]= True

@app.route('/index', methods=['GET'])
def home():
    print("came home!..")
    return flask.render_template('index.html')


print('hello there')
a = input("do you want 1. Normal app or  2.Web app? (1/2): ")

if a=='2':
    #do the flask thing
    print("Woo! the next line should start off the web server too .. but does it?")
    b = input("press enter to continue .. and then check with web browser")
    app.run()
else:
    print("Well done. This should end the terminal program cleanly.")
    b = input("press enter to continue .. and end.")

print(".. AND we are out of the main block")

Результаты, показанные ниже, получены с терминала, где пользователь вынужден дважды выбрать опцию '2', чтобы запустить сервер. Веб-страница хорошо отображается в браузере. при нажатии Ctrl + C выходим из приложения (дважды!)

hello there
do you want 1. Normal app or  2.Web app? (1/2): 2
Woo! the next line should start off the web server too .. but does it?
press enter to continue .. and then check with web browser
 * Serving Flask app "try" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
hello there
do you want 1. Normal app or  2.Web app? (1/2): 2
Woo! the next line should start off the web server too .. but does it?
press enter to continue .. and then check with web browser
 * Debugger is active!
 * Debugger PIN: 132-339-530
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
came home!..
127.0.0.1 - - [26/Apr/2020 18:12:38] "GET /index HTTP/1.1" 200 -
.. AND we are out of the main block
.. AND we are out of the main block

1 Ответ

0 голосов
/ 26 апреля 2020

Самое простое решение - установить для отладки значение false. Или используйте любое из решений здесь: Почему сервер Flask dev работает дважды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...