python - 在 python 中,如何让 UDPServer 自行关闭?

标签 python udp shutdown socketserver

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

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

并开始于:

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

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

最佳答案

通过使用线程。由一个线程提供服务并在超时后通过另一个线程进行。 考虑这个工作示例。为您的 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 - 在 python 中,如何让 UDPServer 自行关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5178536/

相关文章:

android - 在 Android 上使用 vlclib

c - 如何在 C 中枚举 Windows 上绑定(bind)的 UDP/TCP 套接字

java - 将所有接口(interface)实例注册到某个全局容器

go - 如何正确停止Go sdk自带的web-server?

python - Django ModelForm显示外键的模型字段而不是对象ID

python - 生产聊天应用程序上的 Websocket :

python - 在 Kivy Canvas 上绘制 SVG

swift - 绑定(bind)到 macOS 10.12 上的套接字时的 NSPOSIXErrorDomain

python - Discord.py 重启命令

Python请求包脚本错误