无法使用 Ruby 从 Amazon EC2 实例下的一个 FTP 服务器获取二进制文件
Cannot get binaryfile using Ruby from one FTP server under Amazon EC2 instance
我有一部分代码是从一个 FTP 服务器获取二进制文件流。
它可以在我的 Ubuntu 上运行,但是当我在 Amazon EC2 实例上尝试时,代码无法从 FTP 服务器获取二进制文件。
我尝试切换到另一个名为 open-uri 的 gem。它可以在我的本地 PC 和远程 EC2 实例上获取二进制文件流。
我使用EC2实例的默认VPC
我已经在 EC2 上打开了端口 20 和 21。我用了dig ftp.cga.ct.gov
,EC2上有答案。
有不明白的地方请各位大侠指出
下面是我在初始化方法中的代码Ruby class:
def initialize(session_id)
@session_id = session_id
@count = 1
tries = 10
begin
ftp = Net::FTP.new("ftp.cga.ct.gov")
ftp.read_timeout = 500
ftp.login
ftp.chdir('/pub/data/')
bill_str= ftp.getbinaryfile("bill_info.csv", nil)
@bill_array = bill_str.delete("\"").split("\r\n")[1..-1]
rescue Exception => e
if (tries -= 1) > 0
sleep 10
print "re-connect"
retry
else
print "Cannot open FTP\nThe error message is #{e}\n#{e.backtrace.join("\n")}"
end
else
return true
end
super
end
我认为这完全是因为亚马逊内部子网错误。检查我的另一个问题和我自己的答案。
我有一部分代码是从一个 FTP 服务器获取二进制文件流。
它可以在我的 Ubuntu 上运行,但是当我在 Amazon EC2 实例上尝试时,代码无法从 FTP 服务器获取二进制文件。
我尝试切换到另一个名为 open-uri 的 gem。它可以在我的本地 PC 和远程 EC2 实例上获取二进制文件流。
我使用EC2实例的默认VPC
我已经在 EC2 上打开了端口 20 和 21。我用了dig ftp.cga.ct.gov
,EC2上有答案。
有不明白的地方请各位大侠指出
下面是我在初始化方法中的代码Ruby class:
def initialize(session_id)
@session_id = session_id
@count = 1
tries = 10
begin
ftp = Net::FTP.new("ftp.cga.ct.gov")
ftp.read_timeout = 500
ftp.login
ftp.chdir('/pub/data/')
bill_str= ftp.getbinaryfile("bill_info.csv", nil)
@bill_array = bill_str.delete("\"").split("\r\n")[1..-1]
rescue Exception => e
if (tries -= 1) > 0
sleep 10
print "re-connect"
retry
else
print "Cannot open FTP\nThe error message is #{e}\n#{e.backtrace.join("\n")}"
end
else
return true
end
super
end
我认为这完全是因为亚马逊内部子网错误。检查我的另一个问题和我自己的答案。