&gt; Does that all make sense?<p>yeah it does make sense.<p>&gt;  in a real-world deployment you couldn&#x27;t limit connections with client-side code<p>yeah that&#x27;s a very good point. But in a real world scenario handling this would not be that easy. Limiting number of available connections on the server side is not a trivial task to implement. Setting your server to avoid failures and simply return either 503 service unavailable to some clients  or 429 (too many conns) to others would probably require quite a lot of coding. It&#x27;s also not very clear to me how this would be implemented, how do people implement things like this? Just putting some check for number of open files before line that opens file and setting response code to 500 and 429 before opening file? This would only stop server from opening to many &quot;html&quot; files, but would not stop server from getting flooded with connections. Is my aiohttp app even the right place to add checks like this? Wouldn&#x27;t it be better to use haproxy or nginx or some other load balancing service in front of aiohttp app and let it handle too much traffic?<p>Other thing that comes to my mind (need to check this later) is that perhaps some partial &quot;handling&quot; of cases like this could&#x2F;should be implemented in aiohttp library. I&#x27;m not sure how it behaves now, but maybe it should simply fail to open file, return 500 to the client, and print noisy traceback about open files to my logs? I didnt see this behavior when doing my tests, so either it didn&#x27;t occur, is not implemented in aiohttp, or it occurrred and I somehow missed that. From my experience with Twisted I know that this is how Twisted resources behave, if you have some unhandled exceptions twisted just returns 500 to client and show traceback in logs.