我可以在ruby中一次安全地使用多个mongo游标吗?

时间:2015-08-12 14:38:06

标签: ruby mongodb cursor

您能否告诉我以下代码是否安全且不存在某些文件可能遗漏的风险? 代码背后的想法是处理多个数据集(为多个查询获得),但在每个集合中花费最多n秒。

示例:对于两组数据[1,2,3,4][A,B,C,D],假设每个项目处理时间为5秒,took_too_much_time每10秒返回true,我想过程1,2,然后是A,B,然后是3,4,然后是C,D。

在少量数据上,一切都运行良好但在切换到更大的设置(数十个查询和数千个文档)后,我遗漏了一些文档。如果你可以确认或否认以下代码可能是原因,那将是非常好的。

cursors = []
queries.each do |query|
    collection.find(query, {timeout: false}) { |c| cursors << c }
end

while(cursors.any?)
    cursors.each do |c|
        c.each do |document|
            process_document(document)
            break if took_too_much_time
        end
    end

    cursors = remove_empty_cursors(cursors)
end

0 个答案:

没有答案