在serve_forever之后正常关闭服务器

时间:2018-09-08 18:04:07

标签: python python-3.x

我的应用存在后,我试图对HTTP服务器进行正常关机。下面的实现只是告诉我,我按下Ctrl + C并永远等待服务器死机。这永远不会发生。我认为这里的问题是serves_forever

from http_server.server import Server
import os
import signal
import sys

server = None

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    server.stop()
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)


if __name__ == '__main__':
    server = Server()
    server.start()

http_handler / server.py

import os
import http.server
import socketserver

PORT=8004

class Server():
    httpd = None

    def start(self):
        web_dir = os.path.join(os.path.dirname(__file__), '../static')
        os.chdir(web_dir)

        Handler = http.server.SimpleHTTPRequestHandler
        self.httpd = socketserver.TCPServer(("", PORT), Handler)
        print("serving at port", PORT)
        self.httpd.serve_forever()

    def stop(self):
        self.httpd.shutdown()

如何使我的脚本正常关闭服务器并释放端口?我对依靠python自身清理不满意,因为该端口在应用程序关闭后仍然占用了一段时间。我希望我的应用花一些时间退出明确释放所有已用资源的方法。

0 个答案:

没有答案