Domanda

I'm randomly getting IOError: request data read error in Django's POST handler while uploading data on 3G network. The question why Django raises that particular exception has already been answered (summary: allegedly happens when client dropped TCP connection). However, in my case I'm trying to solve underlying issue.

From my attempts to narrow down the issue, I've found that:

  • not reproducible on WiFi
  • not reproducible on GPRS only
  • reproducible on various types of handsets (both Android and iPhone) and multiple carriers
  • seems to not have happened in some locations
  • seems to have happened in other location, especially when I could see the data speed indicator switching between 3G, H and H+ (UMTS, HSDPA and HSPA+)

My wild guess is that what happens there is switching towers. So what happens to TCP connection when 3G switches between towers?

È stato utile?

Soluzione

The TCP connection itself should not normally see any interruption to connectivity when you handover in a well performing network, and even if it did TCP would normally simply back off and retry.

There are actually different types of handover in 3G networks depending on what the 'tower' you are moving from is connected to in the operators access network and what the access nodes in turn are connected to in the operators core network. It also depends on how the core network is configured - some networks will have a one to one mapping between access nodes and core nodes and some will allow pools of access nodes share core nodes which will reduce the likelihood of having to transfer between one core node and another.

The following guide gives a good overview of handover types in a 3G network: http://www.3g4g.co.uk/Tutorial/ZG/zg_handover.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top