I'll post some more tomorrow when I get in to work.
As far as the 'blocking' goes I don't see how that can be.
The program does not hang (block) on the print statement, it stops at it (dies without raising an exception).
I'll also try putting the client file handle on a select and see if it can_write.