我已经看遍了堆栈溢出,我还没有看到一个问题,直接关系到我想要做什么。
我目前正在尝试编写一个服务器,该服务器在每个查询上生成一个线程,然后在查询完成后放弃该线程。我一直在阅读尽可能多的线程问题,但我发现的唯一答案是提示关闭套接字服务器,我认为这对我而言并不合适。这个例子只有一个线程,但想象一下它们有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