SOAP and XMLRPC have quite a few tradeoffs, but without knowing
exactly what your setup is (other than Python/Django) I'd advise you
to go with XMLRPC. However, I'll lay out why I think so and perhaps
SOAP does make more sense for you.
SOAP is the successor to XMLRPC and some people -- notably people from
the Java and .NET worlds -- think that SOAP is "better". In the Java
and .NET worlds, SOAP is pretty common but a lot of the scripting
language worlds are moving toward a third option REST which I won't
get into here since it doesn't seem to be an option for you. With
Python, XMLRPC is built into the standard library where you'll have to
go to Pypi for a SOAP library. Rolling your own SOAP library is
probably not a good idea since SOAP is complex and verbose. In
addition, there are occasionally incompatibilities with .NET SOAP
services or so I've been led to believe from others at work.
While SOAP is certainly more complex, in some cases it can make up for
it with type checking, code generation or object translation. SOAP
services usually make use of a web service description language
document (WSDL) that describes the service and can contain XML schemas
that describe in great detail the properties of the objects in the
service. Using this, a SOAP library may be able to automatically take
native objects and send them in web service calls or take web service
responses and translate them into objects. It is possible that with a
good library, you may need to write less code with SOAP. In general,
XMLRPC in Python will translate your objects into requests and
responses into objects, but XMLRPC only supports a few data types
(int, float, list, dict, datetime) compared with SOAP. Possibly
because of this lack of complexity, XMLRPC is pretty well standardized
between various clients and servers. If you just need to use a couple
services that your client is exposing and those services accept just a
couple primitive parameters, XMLRPC is your best bet.