Флажок не печатает на консоль

Я новичок в фляге, и я пытаюсь добавить информацию о печати для отладки кода на стороне сервера. При запуске приложения с флагом с debug = True, я не могу получить какую-либо информацию для печати на консоли

Я попытался использовать запись, но не успел. Итак, как отлаживать фляжку с консолью.

@app.route('/getJSONResult', methods=['GET', 'POST'])
def getJSONResult():

    if request.method == 'POST':
        uut = request.form['uut']
        notes = request.form['notes']
        temperature = request.form['temperature']

        logging.info("enter getJSONReuslt")
        print('enter getJSONReuslt')
        filter_by_query = {k: v for k, v in {
            'uut': uut, 'notes': notes, 'temperature': temperature}.items() if v != ""}
        s = session.query(UUT_TEST_INFO).filter_by(**filter_by_query).first()
        return jsonify(s.serialize)

if __name__ == '__main__':
    app.secret_key = ''.join(random.choice(
        string.ascii_uppercase + string.digits) for x in range(32))
    app.debug = True
    app.run(host='127.0.0.1', port=5000)


> 127.0.0.1 - - [07/Jun/2017 15:20:48] "GET /qyer HTTP/1.1" 200 -
> 127.0.0.1 - - [07/Jun/2017 15:20:48] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 -
> 127.0.0.1 - - [07/Jun/2017 15:20:48] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 -
> 127.0.0.1 - - [07/Jun/2017 15:20:51] "GET /static/css/bootstrap.min.css.map HTTP/1.1" 200 -
> 127.0.0.1 - - [07/Jun/2017 15:21:58] "POST /getJSONResult HTTP/1.1" 500 -

Я исправил ошибку на стороне сервера 500, теперь запросите код 200, а на консоли отобразится следующая информация

$ python project.py
INFO:werkzeug: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
INFO:werkzeug: * Restarting with stat
WARNING:werkzeug: * Debugger is active!
INFO:werkzeug: * Debugger pin code: 158-624-607
INFO:werkzeug:127.0.0.1 - - [08/Jun/2017 11:33:33] "GET /qyer HTTP/1.1" 200 -
INFO:root:Enter getJSONResult
INFO:werkzeug:127.0.0.1 - - [08/Jun/2017 11:33:43] "POST /getJSONResult HTTP/1.1" 200 -

По-прежнему нет информации из команды печати

Ответ 1

Попробуйте это и посмотрите, поможет ли это:

Для python2:

from __future__ import print_function
import sys

print('This is error output', file=sys.stderr)
print('This is standard output', file=sys.stdout)

Для python3 вам не нужно импортировать из будущей функции print_function:

import sys

print('This is error output', file=sys.stderr)
print('This is standard output', file=sys.stdout)

Посмотрите, поможет ли это для печати на консоли.

Ответ 2

По умолчанию уровень ведения журнала является предупреждением. Таким образом, вы не увидите сообщение регистрации уровня DEBUG. Чтобы исправить это, просто включите ведение журнала отладки с помощью функции basicConfig() модуля регистрации:

import logging
logging.basicConfig(level=logging.DEBUG)

Ответ 3

Была такая же проблема печати. Использование sys.stdout.flush() после print решило проблему.

Ответ 4

Вы можете принудительно сбросить стандартный вывод с печати:

print('enter getJSONReuslt', flush=True)

Таким образом, вам не нужно печатать в sys.stderr (который сбрасывается по умолчанию).

Причиной вашей проблемы является линейная буферизация. Линейная буферизация делает ввод-вывод более эффективным с недостатком, заключающимся в немедленном отображении отпечатков при некоторых условиях.