Note: I'm aware this may look an opinion-based question, but I'd like to have a technical answer.
I'm building an application which is targeted to countries where Internet connection is unstable and most of the time slow (I assume around 1/2 Mbps).
Here in Europe Meteor performs very well almost all the time with very quick live updates. However I have no idea how it can perform on legacy networks (high latency / unstable).
The alternative would be using Django as a full-stack framework which as far as I understand is not a real-time one.
Any opinion (possibly backed by technical data) is very welcome.
I don't get the downvotes, seems like a legit question for someone getting started. I'm currently living in Mexico & before Meteor I used Django. I can definitely relate.
First, "fullstack django" doesn't exist. It's a server language. You'd still need a frontend framework like angular/react/blaze. Then, you'd set django up to be a REST backend. From there, you could use websockets, or http longpolling, or pull-style updates (user click inits a request). Meteor uses websockets.
Regardless of what option you choose, it's still up to you to develop for frequent outages. For example, lets say you have an icon font that is lazily loaded. If you try to display that for the first time when the user is disconnected, you'll get that weird box character & it WON'T reactively update.
Other less obscure examples might be database changes. Since meteor keeps a local copy, it blows the competition out of the water with latency compensation. If you are disconnected & edit the database, Meteor optimistically makes those changes on the client & puts them in a queue to send to the server. Then, upon reconnect, it sends them to the server & reads back the legit results. Can you do this with Django? Sure. But you're on your own for coding it.
Furthermore, when users don't see a page load quickly, they refresh the page. if you do server side rendering + ajax, you're sending over a ton of html code. If you are using Meteor, the user is loading the app from the cache & is simply resubscribing to pure data, no context. That means faster page loads.
Final thought is user experience. With a websocket, you can immediately display a message telling the user that they are disconnected (eg https://github.com/meteor/react-packages/blob/9b6f0f2677fa782b14a2684f1261ca5ab322a730/examples/react-todos/client/components/AppBody.jsx). Again, you could do the same thing with longpolling, but have fun implementing.