ich möchte einen Socket mittels einer Funktion auslesen, die entweder einen gelesenen String oder None zurückgibt, wenn nichts zu lesen ist. Sie soll jedenfalls nicht blockieren, bis etwas zu lesen angekommen bist.
Prinzipiell sehe ich zwei Möglichkeiten, die ich auch schon probiert habe. Entweder mit s.setblocking(0) auf nonblocking schalten und dann die Exception beim Lesen abfangen, wenn der Socket 'leer' ist. Oder mit select.select() bzw. select.poll() nachfragen, ob der Socket überhaupt Lesestoff bereithält.
Wo ist denn nun der große Unterschied beider Varianten? Oder kann ich die vollkommen gleichwertig benutzen? Gibt es irgendwelche Einschränkungen oder Empfehlungen?
Für Neugierige: Im konkreten Fall geht es um einen lokalen Socket (AF_UNIX), der zum lirc (www.lirc.org) gehört, es werden also Events einer Infrarot-Fernbedienung ausgelesen. Das Paket pylirc kenne ich, ich will aber direkt an den Socket ran.

Da Sockets ja viel mit Netzwerken zu tun haben, habe ich mal diese Kategorie gewählt, auch wenn mein Beispiel nur lokal ist.
Danke schonmal!
Jörg