[Sugar-devel] [PATCH sugar] Register with schoolserver: adopt to changes in xmlrpclib for python 2.7 OLPC #10776

Simon Schampijer simon at schampijer.de
Mon May 23 04:01:01 EDT 2011


On 05/20/2011 10:15 PM, Sascha Silbe wrote:
> Excerpts from Simon Schampijer's message of Thu May 19 16:08:36 +0200 2011:
>
>
> s/adopt/adapt/ (or adjust)
>
>> Python 2.7 switched from using httplib.HTTP to using httplib.HTTPConnection,
>>   as the httplib.HTTPConnection includes a timeout by default we can use a
>> xmlrpclib.Transport directly and do not need to subclass it.
>
> I guess we don't need to subclass Transport, but we probably need to
> call socket.setdefaulttimeout() during Sugar start-up:
>
>>> socket.setdefaulttimeout(timeout)
>
>>>     Set the default timeout in floating seconds for new socket objects.
>>>     A value of None indicates that new socket objects have no timeout.
>>>     When the socket module is first imported, the default is None.

Hmm, yes sounds about right. I don't think we have to do it during sugar 
startup (not sure about other side-effects), just after the 'else' is 
fine. In any case I guess the real solution is to make the registration 
asynchronous: http://bugs.sugarlabs.org/ticket/2289#comment:4 but I did 
not want to block on it.

> [src/jarabe/desktop/schoolserver.py]
>> -    server = xmlrpclib.ServerProxy(url, _TimeoutTransport())
>> +    if sys.version_info[1]<  7:
>
> "if sys.hexversion<  0x02070000:" has a higher chance of continuing to
> work after a transition to Py3K. The 2to3 tool already takes care of
> renaming xmlrpclib to xmlrpc.client [1].

I guess you mean: "sys.hexversion < 0x2070000". Is ok to me.

>> +        server = xmlrpclib.ServerProxy(url, _TimeoutTransport())
>> +    else:
>> +        server = xmlrpclib.ServerProxy(url, xmlrpclib.Transport())
>
> We can skip the transport altogether for 2.7+. That way we support
> https, too (SafeTransport instead of Transport).

Sounds right: "The optional second argument is a transport factory 
instance; by default it is an internal SafeTransport instance for https: 
URLs and an internal HTTP Transport instance otherwise."

Regards,
    Simon

[1] http://docs.python.org/library/xmlrpclib.html


More information about the Sugar-devel mailing list