python xmlrpc 服务端返回慢的解决方案

最近把一套项目植到另外一套环境中,发觉某个xmlrpc 服务端的返回非常慢,但是把服务器改为公网ip后又没有问题。

      根据这个问题我尝试着问了一下google “xmlrpc response slow”  , 结果还真有人遇到相同的问题,说是因为服务器没有配置host的原因,因为每次返回的时候BaseHTTPRequestHandler 都会调用log_message 方法记录一些日志信息,而log_message方法需要知道请求的host 。 问题就出在这里,当没有host的时候程序会调用_socket 的gethostname()方法,而服务器上并没有配置驿应的host。

     

      我想大家还是比较关心如果解决这个问题

      方法一: 在服务器端添加host 映射,也就是修改hosts文件。 

      方法二: 修改代码。下面有两段示例代码,一段是未修改之前返回慢的,一段是修改后问题解决了

import SimpleXMLRPCServer

class FuncGroup:
    """Just hold the funcs to be used in web service"""
    def hi(self,val):
        return "hi there"

#create server and start it
server_address = ('localhost',8000) # (address, port)
server = SimpleXMLRPCServer.SimpleXMLRPCServer(server_address)
server.register_instance(FuncGroup()) #reg. functions/class instance
server.serve_forever()

修改后

import SimpleXMLRPCServer

#new code
import BaseHTTPServer
def not_insane_address_string(self):
    host, port = self.client_address[:2]
    return '%s (no getfqdn)' % host #这里省去了获取host的方法
BaseHTTPServer.BaseHTTPRequestHandler.address_string =  not_insane_address_string
#end new code

class FuncGroup:
    """Just hold the funcs to be used in web service"""
    def hi(self,val):
        return "hi there"

#create server and start it
server_address = ('localhost',8000) # (address, port)
server = SimpleXMLRPCServer.SimpleXMLRPCServer(server_address)
server.register_instance(FuncGroup()) #reg. functions/class instance
server.serve_forever()

http://www.answermysearches.com/xmlrpc-server-slow-in-python-how-to-fix/2140/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值