gpt4 book ai didi

python - 如何处理 Python XML-RPC 输出和异常?

转载 作者:太空狗 更新时间:2023-10-30 02:50:31 25 4
gpt4 key购买 nike

我创建了一个简单的 Python XML-RPC实现,主要基于示例。

但是,它发送的输出是这样的:

foo.bar.com - - [13/Feb/2010 17:55:47] "POST /RPC2 HTTP/1.0" 200 -

... 到终端,即使我使用 >>> 将标准输出和标准错误重定向到文件。我正在使用以下行执行此操作:

python foobar 2>&1 >> foobar.log

它似乎没有发送到标准输出,而是发送到其他地方。

此外,当接收请求发生异常时,整个应用程序会因此错误而崩溃:

----------------------------------------
Exception happened during processing of request from ('1.2.3.4', 51284)

我该如何处理这个异常?我需要优雅地恢复,只记录异常消息而不是服务器崩溃。

最佳答案

我猜您正在使用示例中的 SimpleXMLRPCServer 类。在这种情况下,只需在创建时提供参数 logRequests:

server = SimpleXMLRPCServer(("localhost", 8000), logRequests = False)

这将抑制请求记录。

至于异常,它们被记录在BaseServer中(参见“SocketServer.py”的源代码):

def handle_error(self, request, client_address):
"""Handle an error gracefully. May be overridden.

The default is to print a traceback and continue.

"""
print '-'*40
print 'Exception happened during processing of request from',
print client_address
import traceback
traceback.print_exc() # XXX But this goes to stderr!
print '-'*40

如您所见,第一部分被写入标准输出,这就是为什么 &2>1 没有完全起作用的原因。如果您想抑制它们,请覆盖或覆盖该方法。

关于python - 如何处理 Python XML-RPC 输出和异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2258514/

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