Alex Rivera | Logout

(Are there) PERFORMANCE advantages of python socketserver over regular socket object?

Asked 2011-06-30T19:47:55.810
10

thanks for the interesting responses thus far. In light of said responses I have changed my question a bit.

guess what I really need to know is, is socketserver as opposed to the straight-up socket library designed to handle both periods of latency and stress, i.e. does it have additional mechanisms or features that justify its implicitly advertised status as a "server," or is it just slightly easier to use?

everyone seems to be recommending socketserver but I'm still not entirely clear why, as opposed to socket.

thanks!!!

I've built some server programs in python based on the standard socket library http://docs.python.org/library/socket.html

I've noticed that they seem to work just fine except that without load they have a tendency to go to sleep after a while. I guess this may not be an issue in production (no doubt there will be plenty of other issues) but I would like to know if I am using the right code for the job here.

Looking around I saw that python also provides a socketserver library - http://docs.python.org/library/socketserver.html

The socket library provides the ability to listen for multiple connections, typically up to 5.

According to the socketserver page, its services are synchronous, i.e. blocking, but one may support asynchronous behavior via threading. I did notice it has the ability to maintain a request queue, with a default value of up to 5 requests...so maybe not much difference there.

I have also read that Twisted runs socketserver under the hood. Though I would rather not get into a beast the size of Twisted unless it's going to be worthwhile.

so my question is, is socketserver more robust than

Edit
Report

1 Answer

10

The socket module is a very low-level module for sending and receiving packets. As said in the documentation, it "provides access to the BSD socket interface".

If you want something more elaborate, there is "socketserver" that takes care of the gory details for you, but it is still relatively low level.

On top of that you can find an HTTP server, with or without CGI, an XML-RPC server, and so on. These are frameworks, which usually means that their code calls your code. It makes things simpler because you just have to fill some "gaps" to have a fully working server, but it also means you have a little bit less control over what it does.

If you only need features of socketserver, I would probably go with it, unless you want to reinvent the wheel for some reason (and there are always good reasons to design new wheels, for example to understand how it works).

answered 2011-07-04T10:54:01.557

Your Answer