Я использую axlsx
gem для создания книги Excel, используя код ниже; Я использовал многопоточность, ожидая, что Excel будет отображаться быстрее:
wb = xlsx_package.workbook
threads = []
wb.add_worksheet(name: "S1") do |sheet|
sheet.sheet_view.show_grid_lines = false
threads << Thread.new{
render :partial => "partial1_sheet1.xlsx.axlsx", :locals => {:wb => wb, :sheet => sheet}
}
threads << Thread.new{
render :partial => "partial2_sheet1.xlsx.axlsx", :locals => {:wb => wb, :sheet => sheet}
}
threads << Thread.new{
render :partial => "partial3_sheet1.xlsx.axlsx", :locals => {:wb => wb, :sheet => sheet}
}
end
threads << Thread.new{
wb.add_worksheet(name: "S2") do |sheet|
sheet.sheet_view.show_grid_lines = false
render :partial => "partial_sheet2.xlsx.axlsx", :locals => {:wb => wb, :sheet => sheet}
end
}
threads << Thread.new{
wb.add_worksheet(name: "S3") do |sheet|
sheet.sheet_view.show_grid_lines = false
render :partial => "partial_sheet3.xlsx.axlsx", :locals => {:wb => wb, :sheet => sheet}
end
}
threads.each { |thr| thr.join }
Я использую 3 потока для рендеринга 3 частичек внутри sheet1 и по одной частичной для sheet2 & 3.
Когда я запускаю этот код, я получаю эту ошибку:
could not obtain a connection from the pool within 5.000 seconds (waited 5.169 seconds); all pooled connections were in use
Я получаю эту ошибку в partial1_sheet1
внутри одного из sheet.add_row
методов, которые я использую для добавления строки в Excel.
Что я здесь не так делаю? Что на самом деле означает эта ошибка? И как я могу обойти это?