For years, I've been avoiding Python 3 in production out of concern for poor library support, a lack of an installation base on end user systems (although most of my code runs on my or my employer's servers), and so other Python 2 developers could comfortably contribute to my code.
There have been a series of articles over the years about the Python 2 vs 3 issue, but now most of them don't reflect the state of affairs on today--August 21, 2014.
The website http://py3readiness.org/ puts us at support for 270 out of the 360 most important packages. I suppose that's enough for most projects, but what scenarios is Python 3 inappropriate for?
On the other hand, Paul Graham's "Beating the Averages" suggests the use of the best language possible for server software, but it's still not completely apparent to me whether Python 2 or 3 is the better language in that context.
That said there is a considerable number of commercial companies who are on 2.x and staying there for the foreseeable (as in "yes we really should move but ...)
I divide these into three camps
- the distribution has 2.x. Some people are still on Ubuntu 12.04 or 10.04 and not planning a move because there is not enough sysadmin resources.
- 2to3 lite: we could move but we have not bothered yet, but 2to3 will auto correct everything anyway.
- we genuinely have too much built on old libraries and old infrastructure that the move to 3 is actually slightly scary
The first one is lack of technical leadership, the second is similar but actually solvable and the third is rare (but I can name a couple of mega corps with that problem)
My suggestion - start on 3.4, building your project on top of it, focus on good Unicode practises anyway and if you find a library that must must must be used and is 2.x only - set it up as a micro service and use it that way :-)