Flask 0.11'de bir flask
CLI piyasaya sürüldü. Hem dokümanlar hem de changelog durumu bunun tavsiye edilir.
Geliştirme Sunucusu belgeleri :
Flask 0.11'den başlayarak, bir geliştirme sunucusu çalıştırmanın birden fazla yerleşik yolu vardır. En iyisi flask komut satırı yardımcı programıdır, ancak
Flask.run()
yöntemi kullanmaya devam edebilirsiniz .Komut satırı
Şişe o üstün yeniden deneyimi sağlar, çünkü komut satırı komut dosyası (Komut Satırı Arayüzü) kuvvetle nedeniyle bu uygulamayı yükler nasıl gelişmesi için tavsiye edilir. Temel kullanım şöyledir:
$ export FLASK_APP=my_application $ export FLASK_DEBUG=1 $ flask run
- Tıklayın CLI sistemi aracılığıyla yerel hata ayıklama sunucusunu başlatmak
flask
içinflask.cli
modül eklendi .flask.run()
Farklı bir tasarım nedeniyle daha hızlı ve daha güvenilir çalıştığı ve aynı zamanda yerini aldığı için bu eski yöntem üzerinde önerilirFlask-Script
.
Şimdiye kadar bu "üstün yeniden yükleme deneyimi" fark etmedi. Özel bir komut dosyası üzerinde CLI kullanma noktasını göremiyorum.
Kullanıyorsanız Flask.run
, ben sadece bir python dosyası yazmak istiyorum:
#!/usr/bin/env python3
from my_app import app
if __name__ == '__main__':
app.run(debug=True)
CLI kullanılıyorsa, ortam değişkenleri belirtilmelidir. CLI belgelerinde bunun activate
virtualenvwrapper komut dosyasına entegre edilebileceği belirtilmektedir . Şahsen ben bu uygulamanın bir parçası olduğunu düşünüyorum ve sürüm kontrolü altında olması gerektiğini düşünüyorum. Ne yazık ki, bir kabuk betiği gereklidir:
#!/usr/bin/env bash
export FLASK_APP=my_app:app
export FLASK_DEBUG=1
flask run
Tabii ki buna, herhangi bir Windows kullanıcısı işbirliği yapmaya başlar başlamaz ek bir bat komut dosyası eşlik edecektir.
Ayrıca ilk seçenek, gerçek uygulamaya başlamadan önce Python'da yazılı kuruluma izin verir.
Bu, örneğin
- komut satırı bağımsız değişkenlerini Python'da ayrıştırma
- uygulamayı çalıştırmadan önce günlüğe kaydetmeyi ayarlama
Özel komutlar eklemenin mümkün olduğunu destekliyor gibi görünüyorlar. Bunun neden isteğe bağlı olarak giriş noktalarından ortaya çıkan basit Python komut dosyaları yazmaktan daha iyi olduğunu göremiyorum.
Python çalıştırma komut dosyasını kullanarak yapılandırılmış bir günlükçü kullanırken örnek günlük çıktısı:
$ ./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: kullanarak yapılandırılmış bir kaydedici kullanırken örnek günlük çıktısı, kök kaydedicinin işlemde yeterince erken ayarlanamadığına dikkat edin.
$ ./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
Asıl sorum basitçe:
Flask CLI neden önerilmektedir Flask.run
?