我已經看遍了堆棧溢出,我還沒有看到一個問題,直接關係到我想要做什麼。
我目前正在嘗試編寫一個服務器,該服務器在每個查詢上生成一個線程,然後在查詢完成後放棄該線程。我一直在閱讀儘可能多的線程問題,但我發現的唯一答案是提示關閉套接字服務器,我認爲這對我而言並不合適。這個例子只有一個線程,但想象一下它們有n個。它們會在查詢時產生,因爲它們在server_forever上,所以它們基本上是內存泄漏。我是相當新的Python穿線,我我試着初始化線程沒有serve_forever,但我得到以下幾點:如何停止一個套接字serve_forever線程蟒蛇2.7
AttributeError: ThreadingUDPServer instance has no __call__ method
如何要麼停止serve_forever線程或者我怎麼一個實例線程沒有使用serve_forever,同時保持目標電話我有?我已經閱讀了大部分有關Python指南中的線程的文檔,但是他們中的任何一篇似乎都沒有解決線程上的serve_forever函數。
myController = Controller.Controller()
servers = [SocketServer.ThreadingUDPServer(('', 53), myController.UDPRequestHandler),]
thread = threading.Thread(target=servers[0].serve_forever)
thread.daemon = True
thread.start()
print 'UDP server loop running in thread: %s' % (thread.name)
try:
while 1:
time.sleep(1)
sys.stderr.flush()
sys.stdout.flush()
爲什麼打電話給'shutdown'是不可接受的?這隻影響每個SocketServer實例。 – Goodies
讓我試試看,我會盡快回復您。根據我的理解,我認爲除了現有的連接之外,它完全關閉了套接字。值得一試。 –
爲什麼你會爲傳入連接產生一個新的套接字服務器?我有點困惑。 – Goodies