1
我有一個外部REST API處理將數據存儲在「數據存儲」中。多個捲曲會導致Windows上的「打開的文件太多」錯誤
在文件上傳時,它們是一個Ruby庫,它調用此API並將其傳遞給數據數組,然後通過外部API將其存儲在數據庫中。
我嘗試將小數組數組傳遞給API,以便在任何捲曲調用中限制後主體內容長度。
庫調用看起來像這樣
def add_data(table_name, table_data)
url = "#{ExternalAPI::URL}/addData"
m_curl = Curl::Multi.new
begin
chunks = table_data.each_slice(ExternalAPI::BATCH_SIZE).to_a
chunks.each do |data_chunk|
data = {
"tableName" => table_name,
"data" => data_chunk
}.to_json
curl = Curl::Easy.new(url)
curl.headers = {}
curl.headers['Content-type'] = 'text/plain'
curl.timeout = 300
curl.post_body = data
m_curl.add(curl)
end
m_curl.perform
true
rescue Exception => e
puts "Curl Failed #{e.message}"
puts "#{e.backtrace}"
Rails.logger.error "Curl Failed #{e.message}"
return false
end
end
這會導致過多的開放連接錯誤的WEBrick發展模式。 我假設Multi::Curl
要麼重新連接的連接,但我不知道這是否發生在內部。
我也嘗試在for
循環中創建一個新的curl連接,並在循環結束時關閉它(我知道它效率低下),但它仍導致相同的錯誤。
任何人都可以請擺脫這一點?