The second line in the following snippet modifies marshalling for long integers to emit <i8> instead of <int> . Yes, this is not too pretty, but should work and fix the problem.
>>> import xmlrpclib >>> xmlrpclib.Marshaller.dispatch[type(0L)] = lambda _, v, w: w("<value><i8>%d</i8></value>" % v) >>> xmlrpclib.dumps((2**63-1,)) '<params>\n<param>\n<value><i8>9223372036854775807</i8></value></param>\n</params>\n'
source share