当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何处理PythonXML-RPC输出和异常?》经验,为你挑选了1个好方法。

我已经创建了一个简单的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)

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



1> AndiDog..:

我想你正在使用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

如您所见,第一部分是写入stdout的,这就是为什么&2>1不能完全运行的原因.如果要禁止它们,请覆盖或覆盖该方法.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有