Use pycurl for S3 requests
Description
This ports the S3 storage and S3 action cache backends to issue S3 requests using presigned URLs and pycurl, which comes with a lower Python CPU overhead (less GIL contention) and support for parallel requests
Changes proposed in this merge request:
- Switch moto to server mode for S3 testing
- Add s3utils module based on pycurl
- S3Storage: Use pycurl-based s3utils
- S3Storage: Implement missing_blobs and bulk_*_blobs methods
- S3ActionCache: Use pycurl-based s3utils
Validation
The existing storage and action cache tests exercise the new code.
Issues addressed
Fixes #386 (closed).
Edited by Jürg Billeter