Go + Services = One Goliath Project
You can start porting your live codebase to python 3 right now - no downtime at all.  You can have a 2+3 compatible codebase live in a week or two, it&#x27;ll get you about 98% the way there [1]<p>My projects (e.g. <a href="https:&#x2F;&#x2F;tmuxp.git-pull.com" rel="nofollow">https:&#x2F;&#x2F;tmuxp.git-pull.com</a>, <a href="https:&#x2F;&#x2F;unihan-etl.git-pull.com" rel="nofollow">https:&#x2F;&#x2F;unihan-etl.git-pull.com</a>) are both python 2&#x2F;3 compatible.<p>I learned by reading through other projects like Sphinx, Flask, Werkzeug, and SQLAlchemy:<p>- Flask: <a href="https:&#x2F;&#x2F;github.com&#x2F;pallets&#x2F;flask" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;pallets&#x2F;flask</a><p>- Werkzeug: <a href="https:&#x2F;&#x2F;github.com&#x2F;pallets&#x2F;werkzeug" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;pallets&#x2F;werkzeug</a><p>- Sphinx <a href="https:&#x2F;&#x2F;github.com&#x2F;sphinx-doc&#x2F;sphinx&#x2F;tree&#x2F;v1.8.5" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sphinx-doc&#x2F;sphinx&#x2F;tree&#x2F;v1.8.5</a> (see compat: <a href="https:&#x2F;&#x2F;github.com&#x2F;sphinx-doc&#x2F;sphinx&#x2F;blob&#x2F;v1.8.5&#x2F;sphinx&#x2F;util&#x2F;compat.py" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sphinx-doc&#x2F;sphinx&#x2F;blob&#x2F;v1.8.5&#x2F;sphinx&#x2F;util...</a>)<p>- <a href="https:&#x2F;&#x2F;github.com&#x2F;sqlalchemy&#x2F;sqlalchemy" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sqlalchemy&#x2F;sqlalchemy</a><p>Helpful blog posts: <a href="http:&#x2F;&#x2F;lucumr.pocoo.org&#x2F;2011&#x2F;1&#x2F;22&#x2F;forwards-compatible-python&#x2F;" rel="nofollow">http:&#x2F;&#x2F;lucumr.pocoo.org&#x2F;2011&#x2F;1&#x2F;22&#x2F;forwards-compatible-python...</a>, <a href="http:&#x2F;&#x2F;lucumr.pocoo.org&#x2F;2013&#x2F;5&#x2F;21&#x2F;porting-to-python-3-redux&#x2F;" rel="nofollow">http:&#x2F;&#x2F;lucumr.pocoo.org&#x2F;2013&#x2F;5&#x2F;21&#x2F;porting-to-python-3-redux&#x2F;</a><p>As for automation tools, for 2&#x2F;3 compatibility, I used futurize and huge codebase to great success: <a href="https:&#x2F;&#x2F;python-future.org&#x2F;futurize.html" rel="nofollow">https:&#x2F;&#x2F;python-future.org&#x2F;futurize.html</a>. I started with this:<p><pre><code>    futurize --write --stage1 --unicode-literals --nobackups &lt;files&gt;
</code></pre>
and <a href="https:&#x2F;&#x2F;docs.python.org&#x2F;2&#x2F;library&#x2F;2to3.html" rel="nofollow">https:&#x2F;&#x2F;docs.python.org&#x2F;2&#x2F;library&#x2F;2to3.html</a><p><pre><code>    2to3-2.7 -w -n &lt;files&gt;
</code></pre>
Really helped.<p>Also, wire Travis &#x2F; your CI system to have your tests run on python 2 and 3.<p>If you want to test your python 3 codebase live on a subdomain &#x2F; same SQL&#x2F;NoSQL DB, be careful about jobs&#x2F;tasks! Pickle version mismatches and stuff. Use a separate redis&#x2F;whatever DB for the deployments.<p>After you&#x27;re finally on python 3, you can use <a href="https:&#x2F;&#x2F;github.com&#x2F;asottile&#x2F;pyupgrade" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;asottile&#x2F;pyupgrade</a> to modern your code.<p>[1] For the other 2%, use conditionals in your requirements file:<p><pre><code>    enum34==1.0.4;python_version&lt;&quot;3&quot;

    ushlex==0.99.1;python_version&lt;&quot;3&quot;</code></pre>