Saya ingin mengimplementasikan perintah yang dapat menghentikan aplikasi flask dengan menggunakan flask-script. Saya telah mencari solusi untuk sementara waktu. Karena framework tidak menyediakan API "app.stop ()", saya ingin tahu tentang cara membuat kode ini. Saya sedang mengerjakan Ubuntu 12.10 dan Python 2.7.3.
104
Jawaban:
Jika Anda baru saja menjalankan server di desktop Anda, Anda dapat mengekspos titik akhir untuk mematikan server (baca lebih lanjut di Shutdown The Simple Server ):
Berikut adalah pendekatan lain yang lebih berisi:
Beri tahu saya jika ini membantu.
sumber
methods='POST'
, saya mendapatkan405 Method not allowed
kesalahan, sedangkan dengan metode = 'GET'`, ini berfungsi seperti yang disarankan @CS.Saya melakukannya sedikit berbeda menggunakan utas
Saya menggunakannya untuk melakukan tes ujung ke ujung untuk restful api, di mana saya dapat mengirim permintaan menggunakan pustaka permintaan python.
sumber
Ini adalah utas yang agak lama, tetapi jika seseorang bereksperimen, mempelajari, atau menguji aplikasi flask dasar, dimulai dari skrip yang berjalan di latar belakang, cara tercepat untuk menghentikannya adalah dengan menghentikan proses yang berjalan pada port tempat Anda menjalankan aplikasi Anda di. Catatan: Saya tahu penulis sedang mencari cara untuk tidak mematikan atau menghentikan aplikasi. Tetapi ini dapat membantu seseorang yang sedang belajar.
Anda akan mendapatkan sesuatu seperti ini.
Untuk menghentikan aplikasi, matikan prosesnya
sumber
Metode saya dapat dilanjutkan melalui terminal / konsol bash
1) jalankan dan dapatkan nomor proses
2a) menghentikan proses
2b) matikan proses jika di atas tidak berfungsi
sumber
kill -9 `lsof -i:5000 -t`
tidak lain dari hanya 1 aplikasi yang dapat menggunakan port dan itu mudah.Seperti yang ditunjukkan orang lain, Anda hanya dapat menggunakan
werkzeug.server.shutdown
dari penangan permintaan. Satu-satunya cara yang saya temukan untuk mematikan server di lain waktu adalah mengirim permintaan kepada diri Anda sendiri. Misalnya,/kill
penangan dalam cuplikan ini akan mematikan server dev kecuali ada permintaan lain yang masuk selama detik berikutnya:sumber
Ini adalah pertanyaan lama, tetapi googling tidak memberi saya wawasan apa pun tentang cara melakukannya.
Karena saya tidak membaca kode di sini dengan benar! (Doh!) Apa yang dilakukannya adalah menaikkan
RuntimeError
ketika tidak adawerkzeug.server.shutdown
direquest.environ
...Jadi yang bisa kita lakukan bila tidak ada
request
adalah menaikkan aRuntimeError
dan tangkap itu ketika
app.run()
kembali:Tidak perlu mengirim permintaan sendiri.
sumber
Anda tidak perlu menekan "CTRL-C", tetapi Anda dapat memberikan titik akhir yang melakukannya untuk Anda:
Sekarang Anda bisa memanggil titik akhir ini untuk mematikan server dengan baik:
sumber
os.kill
, tanggapan yang dikembalikan tidak dapat diterima oleh klien. Untukcurl
, itu menghasilkan "curl: (56) Terima kegagalan: Sambungan direset". Dapat melihat juga Menjalankan fungsi setelah Flask mengembalikan respon untuk menyelesaikannya.Anda dapat menggunakan metode di bawah ini
sumber
Jika Anda bekerja pada CLI dan hanya memiliki satu termos aplikasi / proses yang berjalan (atau lebih tepatnya, Anda hanya ingin ingin membunuh setiap proses labu berjalan pada sistem Anda), Anda dapat membunuhnya dengan:
kill $(pgrep -f flask)
sumber
Jika Anda berada di luar penanganan permintaan-respons, Anda masih dapat:
sumber
Instance Google Cloud VM + Aplikasi Flask
Saya menghosting Aplikasi Flask saya di Mesin Virtual Google Cloud Platform. Saya memulai aplikasi menggunakan
python main.py
Tetapi masalahnya adalah ctrl + c tidak berfungsi untuk menghentikan server.Perintah ini
$ sudo netstat -tulnp | grep :5000
menghentikan server.Aplikasi Flask saya berjalan pada port 5000 secara default.
Catatan: Instance VM saya berjalan di Linux 9.
Ini berhasil untuk ini. Belum diuji untuk platform lain. Jangan ragu untuk memperbarui atau memberi komentar jika berfungsi untuk versi lain juga.
sumber
Untuk Windows, cukup mudah untuk menghentikan / mematikan server flask -
sumber