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