Is Event.wait necessary here?
As long as queue is actually Queue.Queue (or another collection with its own blocking mechanic), the event object is not required in the code you posted. I'd even say that it's used incorrectly. There is a racing condition when the server calls event.set() and a thread is just done with its current task, calling event.clear(). This leaves all threads waiting on the event, even though there's an item in the queue. 

Edit: Bollocks, didn't think that one through. event.set() wakes up all threads that are hanging on event.wait(), causing them to continue waiting at queue.get(). One thread will fetch the item and process it. So, no racing condition. Just redundancy.