我使用amazon s3服务将不同的目录(以及其中的文件)上传到不同的bucket(directory->bucket)。
我用ruby编写代码,并且使用libhttp://amazon.rubyforge.org
文件很小(大约20KB)。
我想并行地上传目录(使用许多线程),但是我必须在s3object.store周围使用synchronize

@mutex.synchronize do
  S3Object.store(s3_obj_name, open(image_name), bucket_name)
end

如果不使用synchronize,则获得Net::HTTPBadResponse异常!
所以,使用synchronize,我失去了使用并行编程的优势。
你对如何成功地进行并行上传有什么想法吗?
谢谢您,
亚历山德罗

最佳答案

似乎您正在使用的ruby s3库不是线程安全的:http://rubyforge.org/tracker/index.php?func=detail&aid=8162&group_id=2409&atid=9357
所以你的选择包括:
为这个库编写一个补丁以保证它的线程安全(我不是ruby人,不知道这有多困难)
找到另一个线程安全的s3 ruby库(我搜索了一下,没有看到任何明显的东西)
编写一个简短的ruby脚本来执行一个s3object.store调用,并从父ruby脚本中执行这个调用。然后每个store()调用都将在一个单独的进程中,线程安全问题不会影响您
这些选项假设您希望继续使用ruby。希望能有所帮助。

关于ruby - 使用Ruby和amazon.rubyforge.org并行上传到Amazon S3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3256670/

10-12 13:01
查看更多