The python client makes all of its HTTP requests without a timeout (read OR connect timeout). Yikes. There should be a timeout on every request with retries for critical requests (e.g. getting a token).
This is basic best practice for any networked app. See the python requests documentation:
"Nearly all production code should use this parameter in nearly all requests. Failure to do so can cause your program to hang indefinitely"
I've patched my fork of clarifai-python to allow for configurable timeouts, so this isn't urgent for me, but this is really a must have - it's absence can cause considerable frustration and overengineered solutions.
EDIT: If Clarifai takes 30 seconds to predict one image and I decide to time out after 5 or 10, I better not be getting charged for that prediction. This would require an SLA and server-side timeouts. I just did a test run of 1000 predictions requests (no batching) on ~200kb JPEGs and fully 2% of them fired read timeouts after 5 seconds. I'm on a very reliable and speed corporate network. That's not a good performance.