Mam skrypt CherryPy, który często uruchamiam, aby uruchomić serwer. Dzisiaj musiałem zacząć i zatrzymać go kilka razy, aby naprawić błędy w pliku konfiguracyjnym, i myślę, że gniazdo nie zamknęło się całkowicie, ponieważ gdy próbowałem go uruchomić ponownie, dostałem ten problem:Błąd gniazda: Adres już w użyciu
[23/Mar/2015:14:08:00] ENGINE Listening for SIGHUP.
[23/Mar/2015:14:08:00] ENGINE Listening for SIGTERM.
[23/Mar/2015:14:08:00] ENGINE Listening for SIGUSR1.
[23/Mar/2015:14:08:00] ENGINE Bus STARTING
CherryPy Checker:
The Application mounted at '' has an empty config.
[23/Mar/2015:14:08:00] ENGINE Started monitor thread 'Autoreloader'.
[23/Mar/2015:14:08:00] ENGINE Started monitor thread '_TimeoutMonitor'.
[23/Mar/2015:14:08:00] ENGINE Error in HTTP server: shutting down
Traceback (most recent call last):
File "/home/andrew/virtualenvs/mikernels/lib/python2.7/site-packages/cherrypy/process/servers.py", line 188, in _start_http_thread
self.httpserver.start()
File "/home/andrew/virtualenvs/mikernels/lib/python2.7/site-packages/cherrypy/wsgiserver/wsgiserver2.py", line 1848, in start
raise socket.error(msg)
error: No socket could be created
edytowany wsgiserver2.py CherryPy, aby zobaczyć szczegóły socket.error i error.strerror
był
98 (98, 'Address already in use') Address already in use
Tymczasem moje gniazdo jest skonstruowany jako:
af = 2
socktype = 1
proto = 6
canonname = ''
sa = ('0.0.0.0', 2112)
self.bind(af, socktype, proto)
(tha nie jest to dokładny kod, ale takie są wartości w momencie wystrzelenia błędu)
Sprawdziłem netstat i nie widziałem nic nasłuchującego na porcie 2112, co mogło być przyczyną problemu i jak mogę go zdiagnozować?
Dzięki!
Co to zrobi? –
@AndrewLatham, zobacz zmiany w moim poście – ForceBru
Dzięki, ale widzę w kodzie, który prowadzę, że CherryPy faktycznie to robi. Linia 1884: self.socket.setsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) Umieściłem polecenie print po tym wierszu, aby sprawdzić, czy nie zostało ono wykonane, ale wygląda na to, że jest. –