Not the OP but my impression with asyncio was that it's great for the uses case it was built for (hence the "no problems") but if you need to do something a bit different it can become an annoyance (hence the "unexpected bugs").
I see it for a specialized solution for a specific class of problems, which can lead to surprises if your problem evolves. There are always trade-offs to be made (performance, flexibility, hardware cost, etc.), asyncio just has different characteristics than the alternatives. Maybe since a upper bound of concurrent users it is always a great (the best?) solution, someone with more experience along all the design and requirements space could comment.
There are things that are quite good for other than what they were designed for.
I find it interesting when someone mentions that X is bad for something it was not designed for, as much as I am interested when someone mentions that X is good even if it was not designed for something.
Not the OP but my impression with asyncio was that it's great for the uses case it was built for (hence the "no problems") but if you need to do something a bit different it can become an annoyance (hence the "unexpected bugs").
I see it for a specialized solution for a specific class of problems, which can lead to surprises if your problem evolves. There are always trade-offs to be made (performance, flexibility, hardware cost, etc.), asyncio just has different characteristics than the alternatives. Maybe since a upper bound of concurrent users it is always a great (the best?) solution, someone with more experience along all the design and requirements space could comment.
I am always amused by "it's bad because it's bad at things it wasn't designed to be good at" rationalizations.
There are things that are quite good for other than what they were designed for.
I find it interesting when someone mentions that X is bad for something it was not designed for, as much as I am interested when someone mentions that X is good even if it was not designed for something.