Когда я запускаю этот кусок кода с задачей, он работаетSQLite3 :: BusyException: база данных заблокирована: INSERT INTO
task :importGss => :environment do
Gss.delete_all
file = Rails.root + "app/assets/CSVs/gss.csv"
csv_text = File.read(file)
puts csv_text.size
csv = CSV.parse(csv_text, :col_sep => ';', :headers => true)
csv.each do |row|
Gss.create!(row.to_hash)
end
Когда я запускаю его с MVC, у меня есть следующее сообщение:
ActiveRecord :: StatementInvalid (SQLite3 :: BusyException: база данных заблокирована:
я поставил выше код в функции в модели Gss импорт запускается из браузера с ГЭТ, который направляется к. контроллер, который вызывает функцию импорта модели Когда импорт завершен, полный список записей затем должен быть возвращен в представление. Файл csv имеет 4k строк. Процесс импорта занимает много времени, и кажется, что через 60 секунд GET отправляется повторно. Может ли кто-нибудь объяснить мне, как избежать повторной отправки, что приводит к сбою импорта?
Спасибо! Это работает. Как насчет такого таймаута, который отправляет GET? Есть ли способ избежать этого? – user3239711
Я не знаю ни одного, я не думаю, что сервер контролирует i.e клиентскую сторону? Хотя я не уверен. Действие длится менее 60 секунд, хотя верно? – RichardAE
Да, но если мне нужно загрузить файлы lager? Интересно, приходит ли он из браузера. И в этом случае, можно ли проверить факт, что база данных занята, чтобы избежать столкновения – user3239711