データをCSVにエクスポートし、Herokuから別のFTPサイトにアップロードする方法は?
-
22-10-2019 - |
質問
DBからエクスポートし、CSVファイルとして保存してからFTPサーバーにアップロードするデータがいくつかあります。このサイトはHerokuでホストされており、TMP(またはログ?)ディレクトリにのみ手紙を書くことができることを理解しています。
これは私の地元のマシンでうまく機能しますが、Herokuでは機能しません。
これが私のレーキタスクです:
require 'csv'
require 'net/ftp'
task :export_data => :environment do
path = "tmp/"
filename = 'test_' + Date.today.to_s + '.dat'
messages = Message.where( :foo => bar)
CSV.open(path + filename, "wb", :col_sep => '|') do |csv|
messages.each do |m|
csv << [m.id.to_s, m.name]
puts "Processing message " + m.id.to_s
end
end
puts "Uploading " + filename
ftp = Net::FTP.new('ftp.hostname.com')
ftp.login(user = "******", passwd = "*******")
ftp.puttextfile(path + filename, filename)
ftp.quit()
puts "Finished."
end
2つの問題があります:
Q1。レコードを繰り返すのは非常に遅いです。 200分の5分。これが使用できるかどうかはわかりません。
Q2。 FTPにはエラーがあり、クラッシュします。ファイルをFTPサーバーに配置し始めますが、データを記述しません。空のファイルです。ログは読みます:
Starting process with command `rake jobs:work`
2011-10-17T21:17:11+00:00 app[worker.1]: (in /app)
2011-10-17T21:17:13+00:00 heroku[worker.1]: State changed from starting to up
2011-10-17T21:17:13+00:00 app[worker.1]: rake aborted!
2011-10-17T21:17:13+00:00 app[worker.1]: Don't know how to build task 'jobs:work'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1720:in `[]'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2040:in `invoke_task'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2019:in `block (2 levels) in top_level'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2019:in `each'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2019:in `block in top_level'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2013:in `top_level'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1992:in `run'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/bin/rake:31:in `<main>'
2011-10-17T21:17:13+00:00 heroku[worker.1]: Process exited
2011-10-17T21:17:14+00:00 heroku[worker.1]: State changed from up to crashed
ファイルが利用できないことに問題がありますか、それともファイルシステムに他の問題がありますか?ローカルマシンで動作します。
何か案は?
ありがとう。
解決 2
回答:
Q1:遅くはありません。遅い部分がコンソールに出力しているため、ゆっくりと見えます。
Q2:FTPは設定によって修正されました ftp.passive = true
他のヒント
答えはあります
2011-10-17T21:17:13+00:00 app[worker.1]: Don't know how to build task 'jobs:work'
何らかの理由で、あなたのrakefileは仕事を認識していません:仕事。これがdelayed_jobタスクであることを考えると、delayed_jobのインストールのすべてのステップを適切にカバーしていますか?
これを生産モードでローカルに試しましたか?
所属していません StackOverflow