
It became very painful once we started getting CPU bound on 32 core CPU machines. We had to run multiple instances of our Twisted server implementation to saturate the machine. I have since "ported" the same application to Erlang/OTP. It is about 1/5 the amount of code. And it scales 1:1 horizontally (adding more CPUs local or remote ) and vertically (adding FASTER cpus ) with no code changes.
The broad statement that Twisted doesn't possess the capabilities of Erlang/OTP is pretty much accurate. Each solves a different problem. Granted Erlang/OTP is definately a super-set of what Twisted does.
Scaling horizontally, i.e. parallelization of twisted servers over multiple cores is a difficult problem. We run this on 8 and 16 core CPU machines, one process per core, and I use UDP multicasts on internal LAN for messaging between the servers (both inside the same physical machine, or to remote nodes). This is of course less than ideal. It would be very nice if Twisted had some inherent capabilities for scaling horizontally.
vertically (adding FASTER cpus ) with no code changes.
When you ported, were you able to serve to less or more clients on the same speed CPU core? The biggest advantage of Twisted is a shorter development time, and the availability of Python libraries. But I wonder if running something of the scale of Facebook chat would be feasible at all, or if there are people on this list that have run many parallelized twisted servers that saturated many multi-core machines? In other words, are there practical examples of large-scale Twisted deployment?