在python中,如何让UDPServer自行关闭? [英] In python, how to get a UDPServer to shutdown itself?

查看:20
本文介绍了在python中,如何让UDPServer自行关闭?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用声明为服务器创建了一个类:

I've created a class for a server with the declaration:

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

然后开始:

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

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

My question is: how can I get the server to shutdown itself? I've seen it has a base class (of a base class) called BaseServer with a shutdown method. It can be called on someServer with someServer.shutdown() but this is from the outside of the server itself.

推荐答案

通过使用线程.由一个线程提供服务,并在超时后通过另一个线程提供服务.考虑这个工作示例.为您的 UDPServer 修改它

By using threads. Serving by one thread and going via another after your timeout. Consider this working example. Modify it for your 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()

这篇关于在python中,如何让UDPServer自行关闭?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆