1
我将操作系统更新为Centos 7.现在我有了Python 2.7。python can not marshal <class'decimal.Decimal'> objects
下面的代码在Python 2.6中工作,但现在它不起作用。
OS: Centos 7
Python 2.7.5
Apache/2.4.6
我do_POST是:
def do_POST(self):
"""Handles the HTTP POST request.
Attempts to interpret all HTTP POST requests as XML-RPC calls,
which are forwarded to the _dispatch method for handling.
"""
try:
# get arguments
data = self.rfile.read(int(self.headers["content-length"]))
params, method = xmlrpclib.loads(data)
# generate response
try:
response = self._dispatch(method, params)
# wrap response in a singleton tuple
response = (response,)
except XMLRPCFault:
# report exception back to server
response = xmlrpclib.dumps(
xmlrpclib.Fault(1, "%s" % (sys.exc_info()[1]))
)
else:
response = xmlrpclib.dumps(response, methodresponse=1)
except:
logException(LOG_ERROR,"XMLRPCServer")
# internal error, report as HTTP server error
self.send_response(500)
self.end_headers()
else:
# got a valid XML RPC response
self.send_response(200)
self.send_header("Content-type", "text/xml")
self.send_header("Content-length", str(len(response)))
self.end_headers()
self.wfile.write(response)
# shut down the connection
self.wfile.flush()
self.connection.shutdown(1)
的错误是:
2015/08/15-11:49:36 XMLRPCServer
Traceback (most recent call last):
File "/usr/local/IBSng/core/server/xmlrpcserver.py", line 53, in do_POST
response = xmlrpclib.dumps(response, methodresponse=1)
File "/usr/lib64/python2.7/xmlrpclib.py", line 1085, in dumps
data = m.dumps(params)
File "/usr/lib64/python2.7/xmlrpclib.py", line 632, in dumps
dump(v, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 654, in __dump
f(self, value, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 735, in dump_struct
dump(v, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 654, in __dump
f(self, value, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 735, in dump_struct
dump(v, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 654, in __dump
f(self, value, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 735, in dump_struct
dump(v, write)
File "/usr/lib64/python2.7/xmlrpclib.py", line 646, in __dump
raise TypeError, "cannot marshal %s objects" % type(value)
TypeError: cannot marshal <class 'decimal.Decimal'> objects
或第三个选项 - 在'Decimal'对象转换为字符串AA首先,然后转换回“Decimal” –
@MarkChackerian:但是这需要XML-RPC服务器端支持接受这样的字符串值。 –
是 - 只有一个可行的选项,如果你可以改变服务器端。 –