[openstack-dev] Reasoning behind my vote on the Go topic

Samuel Merritt sam at swiftstack.com
Tue Jun 7 22:09:39 UTC 2016

On 6/7/16 12:00 PM, Monty Taylor wrote:
> [snip]
> I'd rather see us focus energy on Python3, asyncio and its pluggable
> event loops. The work in:
> http://magic.io/blog/uvloop-blazing-fast-python-networking/
> is a great indication in an actual apples-to-apples comparison of what
> can be accomplished in python doing IO-bound activities by using modern
> Python techniques. I think that comparing python2+eventlet to a fresh
> rewrite in Go isn't 100% of the story. A TON of work has gone in to
> Python that we're not taking advantage of because we're still supporting
> Python2. So what I've love to see in the realm of comparative
> experimentation is to see if the existing Python we already have can be
> leveraged as we adopt newer and more modern things.

Asyncio, eventlet, and other similar libraries are all very good for 
performing asynchronous IO on sockets and pipes. However, none of them 
help for filesystem IO. That's why Swift needs a golang object server: 
the go runtime will keep some goroutines running even though some other 
goroutines are performing filesystem IO, whereas filesystem IO in Python 
blocks the entire process, asyncio or no asyncio.

More information about the OpenStack-dev mailing list