我正在一个在我的本地主机上创建 Pyramid Web 服务的环境中工作。从这个服务器的设置来看,我希望能够使用不同的服务器生成一个不同的线程,该服务器管理对主服务器的请求队列,并且第二个排队服务器是使用 SimpleXMLRPCServer 实现的。我尝试在服务器 __ init __ 文件中执行以下操作:
server = threading.Thread(target=queue_server.server_start(
'localhost', '8000', 'True'))
server.daemon=True
server.start()
启动线程时调用的函数如下:
def server_start(hostname, port, debug):
debug = debug
server = SimpleXMLRPCServer((hostname, int(port)), allow_none=True)
server.register_function(kill, 'kill')
server.register_function(listen_for_tasks, 'update')
queue_consumer = threading.Thread(target=consumer)
queue_consumer.daemon = True
queue_consumer.start()
print 'Serving'
while not quit:
server.handle_request()
问题是,正如我预期的那样,当我到达 server.handle_request() 时,代码的执行会停止,所以原始服务器(基于 Pyramid 的服务器)没有启动,应该包含这个辅助服务器的进程也没有启动。有没有办法克服这个问题?我绝不是多线程专家,所以问题很可能在于我如何处理线程的生成,非常感谢任何帮助!