Unless there is some unknown trick, I was unable to find a way to make this work, which is why I turned my script into a subclass of Process. Though I do know Rocket can handle multiple simultaneous downloads at once since it allows the browser to download multiple files from /static at the same time. So maybe this is a web2py bug?
But either way, a long-running script should be spun off into its own process for performance reasons.

