You know more about thrift than I do. If the "blocking" code is in python, eventlet should be able to fix it. You can't do anything about the native machine code, though. It appears that the client library includes a c-based codec to improve performance, but it should not be a problem if the transport is based on python sockets.
Can you also shed light on thrift protocol ? i have struggled with the blocking nature of thrift(client).
Does eventlet convert blocking thrift client written in python to non-blocking ?