gpt4 book ai didi

python - 在 python 中关闭 SimpleXMLRPCServer 服务器

转载 作者:行者123 更新时间:2023-12-03 09:38:07 30 4
gpt4 key购买 nike

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

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

我正在尝试做的事情的快照:

类我的类():

"""
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

主要的

如果 姓名 ==“ 主要”:
server = SimpleXMLRPCServer.SimpleXMLRPCServer((socket.gethostname(), Port)
classObj = MyClass()
rpcserver.register_function(classObj.do_some_task)
rpcserver.serve_forever()

一旦服务器启动,它就会在 do_some_task 方法中永远保持在循环中,以继续检查队列中的任何任务。这就是我想要实现的。但现在我想优雅地关闭服务器。在这种情况下,我无法关闭服务器。

到目前为止,我已经尝试使用全局标志 STOP_SERVER 表示“True”,并在 do_some_task while 循环中检查其状态以摆脱它并停止服务器。但没有帮助。

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

您能否建议一些适当的方法来优雅地关闭服务器。

提前致谢

最佳答案

您应该使用 handle_request()而不是 serve_forever()如果你想手动关闭它。因为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指示是否退出无限循环。

关于python - 在 python 中关闭 SimpleXMLRPCServer 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761913/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com