Как остановить TCPServer

На каждой из трех итераций TCPServer должен быть запущен, а затем немедленно остановлен. Все три раза его нужно запустить на порту 8000.

Как определено в приведенном ниже коде, запускается TCPServer. Но это начинается только во время первой итерации. Две другие итерации не запускают TCPServer, поскольку порт 8000 уже используется TCPServer, запущенным на предыдущей (первой) итерации. Чтобы убедиться, что порт 8000 доступен, ранее запущенный TCP-сервер необходимо отключить.

Как прекратить (остановить) уже запущенный TCPServer?

import SimpleHTTPServer
import SocketServer


def startServer():
    Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
    Handler.extensions_map.update({'.webapp': 'application/x-web-app-manifest+json', })
    try:
        httpd = SocketServer.TCPServer(("", 8000), Handler)
        httpd.serve_forever()
        print('httpd server has been successfully started ')
    except Exception, e:
        print(e)


for i in range(3):
    startServer()

1 ответ

Использование shutdown() Скажи serve_forever() цикл, чтобы остановиться и подождать, пока он не сделает Новое в версии 2.6. https://docs.python.org/2/library/socketserver.html

Для вашего кода это должно быть так просто, как

    httpd.serve_forever()
    print('httpd server has been successfully started ')
    httpd.shutdown()
    httpd.server_close()
    print('httpd server has been successfully stopped')

Я оставлю это для OP, чтобы лучше использовать это и пример внизу связанной страницы для требуемого требования.

Другие вопросы по тегам