We use ZMQ as RPC transport between golang coroutine and python thread in web server. The problem is handling one web request will trigger multiple RPC calls between golang and python. The original implementation of the RPC does not bidirectional and multiplexing transport. As result, the call between golang and python will easily consumed all python thread in thread pool very easily. We implement a bidirectional and multiplexing transport, so we can reduce overhead and reuse blocked workers.