As Sébastien Portebois mentioned the Global Interpreter Lock (GIL) is the main caveat. Say you are running your application on a modern multicore server but GIL effectively makes it a single-threaded program. here is a good talk about it.
On the other hand Languages like Go is new. It is built for exploiting modern hardware. Programs written in go can effectively utilize modern multicore processors. It makes writing concurrent programs very easy and straight forward. Go was built for solving problems at Google scale and particularly for writing software like Loadbalancers and Servers. There are projects like caddy which uses the standard library and add a whole lot of features and best practices on top of it.