У колбі 0,11 flask
було введено CLI. Як документи, так і стан змін, це рекомендується.
Починаючи з Flask 0,11, існує кілька вбудованих способів запуску сервера розробки. Найкращий варіант - це утиліта командного рядка flask, але ви також можете продовжувати використовувати
Flask.run()
метод.Командний рядок
Колба командного рядка сценарій (інтерфейс командного рядка) настійно рекомендується для розвитку , оскільки вона забезпечує чудовий досвід перезавантаження з - за того , як він завантажує додаток. Основне використання таке:
$ export FLASK_APP=my_application $ export FLASK_DEBUG=1 $ flask run
- Додано
flask
іflask.cli
модуль для запуску локального сервера налагодження через систему CLI клацання. Це рекомендується за старимflask.run()
методом, оскільки він працює швидше і надійніше завдяки різній конструкції, а також замінюєFlask-Script
.
Поки що я не помітив цього "чудового досвіду перезавантаження". Я не бачу сенсу використання CLI для користувацького сценарію.
Якщо використовується Flask.run
, я просто напишу файл python:
#!/usr/bin/env python3
from my_app import app
if __name__ == '__main__':
app.run(debug=True)
Якщо використовується CLI, потрібно було б вказати змінні середовища. У документах CLI зазначено, що це може бути інтегровано в activate
сценарій virtualenvwrapper. Особисто я вважаю це частиною програми і думаю, що це повинно бути під контролем версій. На жаль, потрібен сценарій оболонки:
#!/usr/bin/env bash
export FLASK_APP=my_app:app
export FLASK_DEBUG=1
flask run
Звичайно, це буде супроводжуватися додатковим сценарієм bat, як тільки користувачі Windows почнуть співпрацювати.
Також перший варіант дозволяє налаштувати записані на Python перед запуском фактичного додатка.
Це дозволяє, наприклад
- для аналізу аргументів командного рядка в Python
- налаштувати журнал перед запуском програми
Здається, вони сприяють тому, що можна додавати спеціальні команди. Я не бачу, чому це краще, ніж писати прості сценарії Python, необов’язково відкриті через точки входу.
Приклад виведення журналу при використанні налаштованого реєстратора за допомогою сценарію запуску Python:
$ ./run.py
DEBUG 21:51:22 main.py:95) Configured logging
INFO 21:51:22 _internal.py:87) * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
INFO 21:51:22 _internal.py:87) * Restarting with inotify reloader
DEBUG 21:51:22 main.py:95) Configured logging
WARNING 21:51:22 _internal.py:87) * Debugger is active!
INFO 21:51:22 _internal.py:87) * Debugger pin code: 263-225-431
DEBUG 21:51:25 inotify_buffer.py:61) in-event <InotifyEvent: src_path=b'my_app/main.py', wd=272, mask=IN_MODIFY, cookie=0, name=b'main.py'>
DEBUG 21:51:25 inotify_buffer.py:61) in-event <InotifyEvent: src_path=b'my_app/main.py', wd=272, mask=IN_MODIFY, cookie=0, name=b'main.py'>
INFO 21:51:25 _internal.py:87) * Detected change in 'my_app/main.py', reloading
INFO 21:51:26 _internal.py:87) * Restarting with inotify reloader
DEBUG 21:51:26 main.py:95) Configured logging
WARNING 21:51:26 _internal.py:87) * Debugger is active!
INFO 21:51:26 _internal.py:87) * Debugger pin code: 263-225-431
Приклад виведення журналу при використанні налаштованого реєстратора за допомогою CLI:, зауважте, що кореневий реєстратор не міг бути налаштований досить рано в процесі.
$ ./run.sh
* Serving Flask app "appsemble.api.main:app"
* Forcing debug mode on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with inotify reloader
DEBUG 21:51:33 main.py:95) Configured logging
* Debugger is active!
* Debugger pin code: 187-758-498
DEBUG 21:51:34 main.py:95) Configured logging
DEBUG 21:51:37 inotify_buffer.py:61) in-event <InotifyEvent: src_path=b'my_app/main.py', wd=272, mask=IN_MODIFY, cookie=0, name=b'main.py'>
DEBUG 21:51:37 inotify_buffer.py:61) in-event <InotifyEvent: src_path=b'my_app/main.py', wd=272, mask=IN_MODIFY, cookie=0, name=b'main.py'>
* Detected change in 'my_app/main.py', reloading
INFO 21:51:37 _internal.py:87) * Detected change in 'my_app/main.py', reloading
* Restarting with inotify reloader
INFO 21:51:38 _internal.py:87) * Restarting with inotify reloader
* Debugger is active!
* Debugger pin code: 187-758-498
DEBUG 21:51:38 main.py:95) Configured logging
Моє актуальне питання просто:
Чому колбу CLI рекомендується перевищувати Flask.run
?