在python中关闭SimpleXMLRPCServer服务器

2024-05-20 14:37:26 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在使用Python中的SimpleXMLRPCServer模块编写一个应用程序。在

此应用程序的基本目标是在服务器上继续运行,并不断检查队列中是否有任何任务。如果它在队列中遇到任何新请求,则为该请求提供服务。在

我要做的事情的快照:

类MyClass():

"""
This class will have methods which will be exposed to the clients
"""
def __init__(self):
    taskQ = Queue.Queue()

def do_some_task(self):
    while True:
         logging.info("Checking the Queue for any Tasks..")
         task = taskQ.get()
         # Do some processing based on the availability of some task

“<=>main名称

^{pr2}$

一旦服务器启动,它将永远处于dou-some-task方法中的循环中,以不断检查队列中是否有任何任务。这就是我想要达到的目标。但现在我想优雅地关闭服务器。在这种情况下,我无法关闭服务器。在

到目前为止,我已经尝试使用一个全局标志STOP_SERVER for'True',并检查它在dou some_task while循环中的状态,以摆脱它并停止服务器。但没有帮助。在

尝试使用SimpleXMLRPCServer的SHUTDOWN()方法,但它似乎进入了某种无限循环。在

你能建议一些适当的方法来正常关闭服务器吗。在

提前谢谢


Tags: the方法self服务器应用程序目标task队列
1条回答
网友
1楼 · 发布于 2024-05-20 14:37:26

如果要手动关闭它,应该使用handle_request(),而不是{}。因为SimpleXMLRPCServer是作为单个线程实现的,serve_forever()将使服务器实例运行到一个无限循环中。在

你可以参考这个article。下面是一个例子:

from SimpleXMLRPCServer import *

class MyServer(SimpleXMLRPCServer):

    def serve_forever(self):
    self.quit = 0
    while not self.quit:
        self.handle_request()


def kill():
    server.quit = 1
    return 1


server = MyServer(('127.0.0.1', 8000))
server.register_function(kill)

server.serve_forever()

通过使用handle_request(),这段代码使用一个状态变量self.quit来指示是否退出无限循环。在

相关问题 更多 >