在python中,如何让UDPServer自行关闭?

我已经为声明的服务器创建了一个类:

class myServer(socketserver.BaseRequestHandler):  
    def handle(self):  
        pass

并开始:

someServer = socketserver.UDPServer((HOST, PORT), myServer)  
someServer.serve_forever()

我的问题是:如何让服务器自行关闭?我已经看到它有一个基类(基类),名为BaseServer,带有shutdown方法.它可以在someServer上使用someServer.shutdown()调用,但这是来自服务器本身的外部.

最佳答案 通过使用线程.在超时后由一个线程服务并通过另一个线程.

考虑这个工作示例.为您的UDPServer修改它

import threading
import time
import SimpleHTTPServer
import SocketServer

PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)

def worker():

    # minimal web server.  serves files relative to the
    print "serving at port", PORT
    httpd.serve_forever()

def my_service():
    time.sleep(3)
    print "I am going down"
    httpd.shutdown()

h = threading.Thread(name='httpd', target=worker)
t = threading.Thread(name='timer', target=my_service)

h.start()
t.start()
点赞