Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ruby和Amazon.rubyforge.org并行上传到AmazonS3_Ruby_Amazon S3_Storage_Amazon Web Services - Fatal编程技术网

使用Ruby和Amazon.rubyforge.org并行上传到AmazonS3

使用Ruby和Amazon.rubyforge.org并行上传到AmazonS3,ruby,amazon-s3,storage,amazon-web-services,Ruby,Amazon S3,Storage,Amazon Web Services,我使用AmazonS3服务将不同的目录(以及其中的文件)上传到不同的存储桶(目录->存储桶)。 我用Ruby编写代码,并且使用lib 这些文件很小(约20KB) 我想并行上传目录(使用多个线程),但我必须在S3Object.store周围使用同步 @mutex.synchronize do S3Object.store(s3_obj_name, open(image_name), bucket_name) end 如果不使用synchronize,我将获得Net::HTTPBadRespo

我使用AmazonS3服务将不同的目录(以及其中的文件)上传到不同的存储桶(目录->存储桶)。 我用Ruby编写代码,并且使用lib

这些文件很小(约20KB)

我想并行上传目录(使用多个线程),但我必须在S3Object.store周围使用同步

@mutex.synchronize do
  S3Object.store(s3_obj_name, open(image_name), bucket_name)
end
如果不使用synchronize,我将获得
Net::HTTPBadResponse
异常! 因此,使用synchronize,我失去了使用并行编程的优势

你对如何成功实现并行上传有什么想法吗

谢谢,,
Alessandro DS

您使用的ruby s3库似乎不是线程安全的:

因此,您的选择包括:

  • 为该库编写一个补丁,使其线程安全(我不是ruby爱好者,不知道这有多困难)
  • 找到另一个线程安全的S3Ruby库(我在谷歌上搜索了它,没有看到任何明显的东西)
  • 编写一个简短的ruby脚本,执行单个S3Object.store调用,并从父ruby脚本执行该调用。然后,每个store()调用都将在一个单独的进程中,线程安全问题不会影响您
这些选项假设您想要坚持使用ruby。希望有帮助