we have a problem with sending in most efficient way about 1000 (or even more) 2MB's chunks via network. We want to avoid pure sockets (if it won't be possible we will use them). For now we've tested:

List item rabbitmq client -> server: about 39sec/GB on localhost (very slow)
requests client -> flask server : still about 40sec/GB on localhost
flask on tornado with creating threads for each IO write opperation and still 40 sec/GB of SSD flash drive
raw tornado still 40 sec/GB

We are running out of ideas. Best solution for us is to use lightweight solution, maybe http.
If all the files are available at the start. I would zip them first to a single file. It is not about the compression but the number of files.
There are certain IO operations (open/close and network start/end) that will happen 100 times for each file which you can easily avoid. Compression will help too.
Now sockets or HTTP, it wont matter much if you have single file (or technically a stream).
What's the fastest way to send 1000 2MB's files using Python?