正在从SocketServer.ForkingTCPServer python释放套接字



我正在创建一个ForkingTCPServer作为代理。它处理得非常好,但在执行后不会释放套接字。我已经尝试过.shutdown().server_close(),但它们只是导致程序冻结。我怎样才能松开插座以便再次使用?

import SocketServer
import SimpleHTTPServer
import urllib
PORT = 8080
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.copyfile(urllib.urlopen("http://"+self.path[1:]), self.wfile)
httpd = SocketServer.ForkingTCPServer(('', PORT), Proxy)
print "serving at port", PORT
httpd.handle_request()

handle_request方法只处理一个请求,因此父进程只回答一个请求。

您可以将对handle_request的调用置于循环中。

否则,如果您的意思是在启动服务器的新副本时出现"正在使用"错误,那是因为您必须等待TCP 2MSL计时器超时。要解决此问题,请在侦听套接字上设置SO_REUSEADDR。(设置self.allow_reuse_address,尽管我不太确定在哪里设置它,因为我还没有这么做。)

最新更新