Meskipun ini mungkin, Anda tidak boleh menggunakan server dev Flask dalam produksi. Server Flask dev tidak dirancang untuk menjadi sangat aman, stabil, atau efisien. Lihat dokumen tentang penerapan solusi yang benar.
Tambahkan parameter ke app.run()
. Secara default ini berjalan di localhost, ubah app.run(host= '0.0.0.0')
untuk berjalan di alamat IP mesin Anda.
Didokumentasikan di situs Flask di bawah "Server Terlihat Eksternal" pada halaman Quickstart :
Server Terlihat Eksternal
Jika Anda menjalankan server, Anda akan melihat bahwa server hanya tersedia dari komputer Anda sendiri, bukan dari yang lain dalam jaringan. Ini adalah default karena dalam mode debugging pengguna aplikasi dapat mengeksekusi kode Python sewenang-wenang di komputer Anda. Jika debug Anda dinonaktifkan atau memercayai pengguna di jaringan Anda, Anda dapat membuat server tersedia untuk umum.
Ubah saja panggilan run()
metode untuk terlihat seperti ini:
app.run(host='0.0.0.0')
Ini memberi tahu sistem operasi Anda untuk mendengarkan pada IP publik.
mymacname.local
.flask run --host 0.0.0.0
untuk membuatnya bekerja.Jika Anda menggunakan termos yang dapat dijalankan untuk memulai server Anda, Anda dapat menggunakan
flask run --host=0.0.0.0
untuk mengubah default dari 127.0.0.1 dan membukanya ke koneksi non lokal. Metode config dan app.run yang dijelaskan oleh jawaban lain mungkin merupakan praktik yang lebih baik tetapi ini bisa berguna juga.Referensi: http://flask.pocoo.org/docs/0.11/quickstart/
sumber
127.0.0.1
(saya mengatur Flask saya dieksekusi dengan benar, atau sepertinya, tidak yakin apa yang saya lakukan salah). Namun, setelah menambahkanapp.run(host='0.0.0.0')
sebagaimana dicatat dalam jawaban lain ke file server saya, saya dapat mengakses halaman di seluruh jaringan. Adakah orang lain yang memiliki masalah seperti yang saya jelaskan atau mempunyai info tentangnya?Coba ini jika metode 0.0.0.0 tidak berfungsi
Hal-hal yang Membosankan
Saya pribadi banyak berjuang untuk mendapatkan aplikasi saya dapat diakses oleh perangkat lain (laptop dan ponsel) melalui server lokal. Saya mencoba metode 0.0.0.0, tetapi tidak berhasil. Lalu saya mencoba mengubah port, tetapi tidak berhasil. Jadi, setelah mencoba banyak kombinasi yang berbeda, saya tiba di yang ini, dan itu memecahkan masalah saya menyebarkan aplikasi saya di server-lokal.
Langkah
ipconfig
di Windows danifconfig
di linux dan Mac.Harap dicatat: Langkah di atas harus dilakukan pada mesin tempat Anda menjalankan aplikasi, dan bukan pada mesin tempat Anda mengaksesnya. Perhatikan juga, bahwa alamat IPv4 dapat berubah jika Anda memutuskan dan menyambung kembali ke jaringan.
Sekarang, cukup jalankan aplikasi labu dengan alamat IPv4 yang diperoleh.
flask run -h 192.168.X.X
Misalnya dalam kasus saya (lihat gambar), saya menjalankannya sebagai:
flask run -h 192.168.1.100
Di perangkat seluler saya
Barang opsional
Jika Anda melakukan prosedur ini pada Windows, dan menggunakan Power Shell sebagai CLI, dan Anda masih tidak dapat mengakses situs web, coba perintah CTRL + C di shell yang menjalankan aplikasi. Power Shell terkadang membeku dan perlu sedikit pemulihan. Melakukan ini bahkan mungkin menghentikan server, tetapi kadang-kadang berhasil.
Itu dia. Berikan jempol jika Anda menemukan ini membantu
Beberapa hal opsional lainnya
Saya telah membuat skrip Powershell singkat yang akan memberi Anda alamat IP Anda kapan pun Anda membutuhkannya:
Simpan ke file dengan extenstion .ps1 (untuk PowerShell), dan jalankan sebelum memulai aplikasi Anda. Anda dapat menyimpannya di folder proyek Anda dan menjalankannya sebagai:
Catatan: Saya menyimpan kode shell di atas di getIP.ps1.
Keren
sumber
Jika
cool
aplikasi Anda memiliki konfigurasi dimuat dari file eksternal, seperti dalam contoh berikut, maka jangan lupa untuk memperbarui file konfigurasi yang sesuai dengan HOST = "0.0.0.0"sumber
Tambahkan baris di bawah ini ke proyek Anda
sumber
OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
netstat -na|findstr 5005
.Periksa apakah port tertentu terbuka di server untuk melayani klien atau tidak?
di distro Ubuntu atau Linux
Konfigurasikan aplikasi untuk menangani permintaan jarak jauh
sumber
Pergi ke jalur proyek Anda di CMD (command Prompt) dan jalankan perintah berikut: -
atur FLASK_APP = ABC.py
SET FLASK_ENV = pengembangan
flask run -h [yourIP] -p 8080
Anda akan mendapatkan o / p berikut di CMD: -
Sekarang Anda dapat mengakses aplikasi labu di komputer lain menggunakan http: // [yourIP]: 8080 / url
sumber
Jika Anda kesulitan mengakses server Flask Anda, yang digunakan menggunakan PyCharm , pertimbangkan hal-hal berikut:
PyCharm tidak menjalankan file .py utama Anda secara langsung, sehingga kode apa pun di
if __name__ == '__main__':
tidak akan dieksekusi, dan perubahan apa pun (sepertiapp.run(host='0.0.0.0', port=5000)
) tidak akan berpengaruh.Sebagai gantinya, Anda harus mengkonfigurasi server Flask menggunakan Run Configurations, khususnya, menempatkan
--host 0.0.0.0 --port 5000
ke dalam bidang opsi tambahan .Lebih lanjut tentang mengkonfigurasi server Flask di PyCharm
sumber
Bagi saya saya mengikuti jawaban di atas dan sedikit memodifikasinya:
Misalnya:
sumber
Saya memiliki masalah yang sama, saya menggunakan PyCharm sebagai editor dan ketika saya membuat proyek, PyCharm menciptakan Server Flask. Apa yang saya lakukan adalah membuat server dengan Python dengan cara berikut;
pada dasarnya yang saya lakukan adalah membuat server baru tetapi labu jika bukan python
Saya harap ini membantu Anda
sumber
Jawaban ini tidak hanya terkait dengan labu, tetapi harus berlaku untuk semua yang tidak dapat menghubungkan layanan dari masalah host lainnya .
netstat -ano | grep <port>
untuk melihat apakah alamatnya 0.0.0.0 atau ::. Jika 127.0.0.1 maka hanya untuk permintaan lokal.Hari ini saya menjalankan aplikasi labu saya seperti biasa, tetapi saya perhatikan itu tidak dapat terhubung dari server lain. Kemudian saya jalankan
netstat -ano | grep <port>
, dan alamat lokal adalah::
atau0.0.0.0
(saya mencoba keduanya, dan saya tahu 127.0.0.1 hanya memungkinkan koneksi dari host lokal). Kemudian saya menggunakantelnet host port
, hasilnya seperticonnect to ...
. Ini sangat aneh. Maka saya pikir saya akan lebih baik memeriksanyatcpdump -i any port <port> -w w.pcap
. Dan saya perhatikan semuanya seperti ini:Kemudian dengan memeriksa
iptables --list
bagian OUTPUT, saya dapat melihat beberapa aturan:aturan-aturan ini melarang paket-paket penting tcp keluaran dalam jabat tangan. Dengan menghapusnya, masalahnya hilang.
sumber
pergi ke path proyek set FLASK_APP = ABC.py SET FLASK_ENV = pengembangan
run labu -h [yourIP] -p 8080 Anda akan mengikuti o / p di CMD: - * Melayani aplikasi Labu "expirement.py" (pemuatan malas) * Lingkungan: pengembangan * Mode debug: aktif * Memulai ulang dengan stat * Debugger aktif ! * PIN Debugger: 199-519-700 * Berjalan di http: // [yourIP]: 8080 / (Tekan CTRL + C untuk keluar)
sumber
Anda juga dapat mengatur host (untuk mengeksposnya pada jaringan yang menghadap alamat IP) dan port melalui variabel lingkungan.
Lihat Bagaimana cara mendapatkan semua Opsi Perintah yang tersedia untuk mengatur variabel lingkungan?
sumber
Buat file
.flaskenv
di direktori root proyek.Parameter dalam file ini biasanya:
Jika Anda memiliki lingkungan virtual, aktifkan dan lakukan a
pip install python-dotenv
.Paket ini akan menggunakan
.flaskenv
file, dan deklarasi di dalamnya akan diimpor secara otomatis di seluruh sesi terminal.Maka Anda bisa melakukannya
flask run
sumber