Trong Flask 0.11, flask
CLI đã được giới thiệu. Cả hai tài liệu và trạng thái thay đổi này được khuyến khích.
Bắt đầu với Flask 0.11, có nhiều cách tích hợp để chạy máy chủ phát triển. Một trong những tốt nhất là bình tiện ích dòng lệnh nhưng bạn cũng có thể tiếp tục sử dụng
Flask.run()
phương pháp.Dòng lệnh
Các bình kịch bản dòng lệnh (Command Line Interface) được khuyến khích mạnh mẽ cho sự phát triển vì nó cung cấp một trải nghiệm tải lại vượt trội do cách nó tải các ứng dụng. Cách sử dụng cơ bản là như thế này:
$ export FLASK_APP=my_application $ export FLASK_DEBUG=1 $ flask run
Thay đổi :
- Đã thêm
flask
vàflask.cli
mô-đun để khởi động máy chủ gỡ lỗi cục bộ thông qua hệ thống CLI nhấp. Điều này được khuyến nghị so vớiflask.run()
phương pháp cũ vì nó hoạt động nhanh hơn và đáng tin cậy hơn do một thiết kế khác và cũng thay thếFlask-Script
.
Cho đến nay tôi đã không nhận thấy "trải nghiệm tải lại vượt trội" này. Tôi không thấy điểm sử dụng CLI qua tập lệnh tùy chỉnh.
Nếu sử dụng Flask.run
, tôi chỉ cần viết một tệp python:
#!/usr/bin/env python3
from my_app import app
if __name__ == '__main__':
app.run(debug=True)
Nếu sử dụng CLI, người ta sẽ phải chỉ định các biến môi trường. Trong các tài liệu CLI được tuyên bố rằng điều này có thể được tích hợp trong activate
tập lệnh của virtualenvwrapper. Cá nhân tôi coi đây là một phần của ứng dụng và nghĩ rằng nó nên được kiểm soát phiên bản. Than ôi, một kịch bản shell là cần thiết:
#!/usr/bin/env bash
export FLASK_APP=my_app:app
export FLASK_DEBUG=1
flask run
Tất nhiên, điều này sẽ được kèm theo một tập lệnh bat bổ sung ngay khi bất kỳ người dùng Windows nào bắt đầu cộng tác.
Ngoài ra tùy chọn đầu tiên cho phép thiết lập được viết bằng Python trước khi bắt đầu ứng dụng thực tế.
Điều này cho phép ví dụ
- để phân tích các đối số dòng lệnh trong Python
- để thiết lập đăng nhập trước khi chạy ứng dụng
Họ dường như quảng bá rằng có thể thêm các lệnh tùy chỉnh. Tôi không thấy lý do tại sao điều này tốt hơn là viết các tập lệnh Python đơn giản, tùy ý hiển thị thông qua các điểm nhập cảnh.
Ví dụ đầu ra ghi nhật ký khi sử dụng bộ ghi nhật ký được cấu hình bằng tập lệnh chạy 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
Ví dụ đầu ra ghi nhật ký khi sử dụng bộ ghi nhật ký được cấu hình bằng CLI:, lưu ý rằng bộ ghi nhật ký gốc không thể được thiết lập đủ sớm trong quy trình.
$ ./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
Câu hỏi thực tế của tôi chỉ đơn giản là:
Tại sao bình CLI được đề nghị hơn Flask.run
?