"Fran, don't borrow trouble. You'll never get a good night's sleep if you do!"
(import Robert Baron's above response in its entirety!)
Okay, "20,000 open chats." In any given clock-millisecond, how many requests will we need to process, and how long will it take to process each one, and how delay-tolerant might they actually be before they begin to ...
So I did some googling, Django has its own set of stuff for websockets, Django channels and behind that Daphne servers.
There doesn't seem to be any documentation about how scaleable Daphe is. There are some post complaining about this lack of documentation.
But it is specifically written for your use case, so there is no reason to expect it to be less ...
Always be prepared to do things over, sometimes you have to.
But also don’t let perfect be the enemy of good enough.
Since this is a first attempt, program it using the languages and libraries you know. Once you have a good feel for things and have actual data, you can refactor/rewrite parts of to meet your performance expectations.