Dalam program soket Python saya, terkadang saya perlu menghentikannya dengan Ctrl-C. Ketika saya melakukan ini, itu menutup koneksi menggunakan socket.close()
.
Namun, ketika saya mencoba membukanya kembali, saya harus menunggu sebentar sebelum saya dapat menyambungkannya lagi. Bagaimana cara menutup soket dengan benar? Atau apakah ini dimaksudkan?
python
sockets
connection
errno
skylerl
sumber
sumber
$ ps -fA | grep python 501 81211 12368 0 10:11PM ttys000 0:03.12 python -m SimpleHTTPServer $ kill 81211
sumber
Jika Anda menggunakan TCPServer, UDPServer, atau subkelasnya di modul SocketServer, Anda dapat menyetel variabel kelas ini (sebelum membuat server):
SocketServer.TCPServer.allow_reuse_address = True
(melalui SocketServer.ThreadingTCPServer - Tidak dapat mengikat ke alamat setelah program dimulai ulang )
Ini menyebabkan init (konstruktor) menjadi:
if self.allow_reuse_address: self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sumber
karena Anda mencoba menjalankan layanan di port yang sama yang sudah berjalan.
beberapa kali ini terjadi karena layanan Anda tidak dihentikan dalam tumpukan proses. kamu harus membunuh mereka
tidak perlu menginstal apa pun di sini adalah perintah satu baris untuk mematikan semua proses python yang sedang berjalan.
untuk OS berbasis Linux:
Pesta:
kill -9 $(ps -A | grep python | awk '{print $1}')
Ikan:
kill -9 (ps -A | grep python | awk '{print $1}')
sumber
Solusi sederhana yang berhasil bagi saya adalah menutup Terminal dan memulai ulang.
sumber
Tidak ada yang berhasil untuk saya kecuali menjalankan subproses dengan perintah ini, sebelum memanggil
HTTPServer(('', 443), myHandler)
:kill -9 $(lsof -ti tcp:443)
Tentu saja ini hanya untuk OS yang mirip linux!
sumber
Pertama-tama temukan ID proses python menggunakan perintah ini
Anda akan mendapatkan nomor pid dengan menamai proses python Anda di kolom kedua
Kemudian matikan proses menggunakan perintah ini
kill -9 pid
sumber
Mendapat kesalahan yang sama:
Langkah-langkah yang diikuti:
1 - digunakan
$ ps -fA | grep python
2 - Membunuh semua proses
3 - Terminal tertutup
4 - melepaskan dan meluncurkan aplikasi (mkchromecast).
5 - tidak mendapatkan pesan kesalahan ini.
Punya masalah lain. menindaklanjuti itu.
sumber
jalankan perintahnya
contoh untuk labu:
fuser -k 5000/tcp
Juga, ingat kesalahan ini muncul saat Anda melakukan interput dengan ctrl + z. jadi untuk menghentikan gunakan ctrl + c
sumber