EDIT: Hm, just noticed that the post above links to the same sections I link to below - damn, I could have saved myself 4 seconds on Google! Sorry, completely missed that link. (^_^)
From a brief Google I turned up this documentation section which rather implies that by default web2py doesn't do connection pooling, but you can specify a pool size to the database abstraction class constructor which enables it. Also, the subsequent section appears to be where the quote above is from - the missing part is that web2py retries up to 5 times at 1-second intervals.
However, this automatic retry doesn't necessarily help - I've seen connection pooling implementations which only check a connection when it's removed from the pool, and then they tend to assume the connection stays valid until it's replaced into the pool, presumably on the assumption that web frameworks tend to process requests quickly so there's no chance for the connection to idle out. If web2py is doing this and in fact the failure is occurring whilst the conneciton isn't idle, then it's quite possible that it would cause these errors. It's also possible that web2py's database layer is simply buggy - connection failures are the sort of thing you often don't see on small systems and test environments so it's quite possible that few people have seen this case.