我想打3的SocketServer在一個Python程序多SocketServer的工作:蟒蛇:在同一時間
import threading
import SimpleHTTPServer
import SocketServer
class PolicyHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(128).strip()
print self.data
if self.data == '<policy-file-request/>\0':
self.request.sendall('message 1')
class LiveRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.request.sendall('message 2')
def main():
httpd = SocketServer.TCPServer(('',80),\
SimpleHTTPServer.SimpleHTTPRequestHandler)
httpdThr = threading.Thread(target=httpd.serve_forever)
httpdThr.daemon = True
httpdThr.start()
liveServer = SocketServer.TCPServer(('',8090), LiveRequestHandler)
livThr = threading.Thread(target=liveServer.serve_forever)
livThr.daemon = True
livThr.start()
policyServer = SocketServer.TCPServer(('',834), PolicyHandler)
policyThr = threading.Thread(target=policyServer.serve_forever)
policyThr.daemon = True
policyThr.start()
if __name__ == '__main__':
main()
我運行它,下面的輸出:
Finding files... done.
Importing test modules ... done.
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
很奇怪的是,它會立即退出該程序,所以我的客戶端程序不能連接到三個套接字服務器。如何防止它退出程序?
有你'SocketServer'文檔中看到的[異步示例](http://docs.python.org/library/socketserver.html#asynchronous-mixins) ? –
是的,我見過。它顯示了一個SocketServer異步處理多重請求。 –
是的,但您可以使用相同的技術將'handle_forever'調用放入單獨的線程中。 –