是否可以使用rsync(或类似的)的方式让我排队请求?
我有一个处理照片的脚本(创build各种尺寸的jpeg),然后将它们上传到服务器。 脚本的第一版做了所有的处理,然后在一切结束。 这不是很有效,所以我试图平行。
所以我有一个版本2的脚本处理一张照片,然后rsyncs只是它在后台创build的JPEG。 该脚本的问题在于,它为每个处理过的照片产生一个新的rsync进程。 如果处理过程与上传时间相同,但是如果上传时间更长,那么最终会导致数十个rsync进程放慢抓取速度。
有没有办法将上传请求作为单个rsync进程传递,以便可以将它们排队? 还是有另一个应用程序可以做类似的?
我从OS X客户端运行这个并上传到Linux服务器。 我的脚本控制它全部用Ruby编写。
谢谢大家。
使用两个线程:
这样,您就可以获得rsync传输仅发生更改的优势。 除最后一次迭代外,至less会发送一个部分文件; 但它不是永久性的伤害,因为它会在下一次迭代中完成。
确保在处理完最后一张照片后开始最后一次rsync迭代。
我试图分割脚本,使得jpeg生成代码与rsync调用代码是分开的。 这样,你可以安排/批量rsyncing你认为合适的。 如果定期上传足够好,或者如果您对OSX特定代码感到满意,则可以通过cron运行rsync,使用launchd的“监视文件夹”function在新的jpeg准备就绪时触发rsync。
使用这两种方法之一,您仍然必须确保一次运行的rsyncs不会太多。 一个简单的解决scheme是将rsync调用包装在代码中,以设置和检查是否存在locking文件(或等价物)。
希望有所帮助