Ruby on rails 打开的文件太多-使用net/http的套接字(2)
我对net/http的http请求有问题 我正在编写一个与dailymotion api交互的ruby脚本。 此脚本将上载一个video test.flv。 它基本上由四个请求组成 在创建视频对象之前,它一直工作正常。 在最后一次测试中出现以下错误 response=http.requestreq命令-> 错误号::EMFILE:打开的文件太多-socket2 这是代码,谢谢你的建议Ruby on rails 打开的文件太多-使用net/http的套接字(2),ruby-on-rails,ruby,sockets,Ruby On Rails,Ruby,Sockets,我对net/http的http请求有问题 我正在编写一个与dailymotion api交互的ruby脚本。 此脚本将上载一个video test.flv。 它基本上由四个请求组成 在创建视频对象之前,它一直工作正常。 在最后一次测试中出现以下错误 response=http.requestreq命令-> 错误号::EMFILE:打开的文件太多-socket2 这是代码,谢谢你的建议 require 'net/http' require 'curb' require 'json' # Aut
require 'net/http'
require 'curb'
require 'json'
# Authenticate the user
url = URI.parse( 'https://api.dailymotion.com/oauth/token' )
req = Net::HTTP::Post.new(url.path)
req.set_form_data({ 'grant_type' => 'password',
'client_id' => 'my_client_id',
'client_secret' => 'my_client_secret',
'username' => 'myusername',
'password' => 'mypassword'
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.request(req)
access_token = JSON.parse( response.body )['access_token']
access_url = 'https://api.dailymotion.com/file/upload?access_token=' + access_token
# Get an upload URL
url = URI.parse( access_url )
req = Net::HTTP::Get.new( url.request_uri )
http = Net::HTTP.new( url.host, url.port )
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.request( req )
upload_url = JSON.parse( response.body )['upload_url']
progress_url = JSON.parse( response.body )['progress_url']
# Post the video
fields_hash = {}
post_data = fields_hash.map { |k, v| Curl::PostField.content(k, v.to_s) }
post_data << Curl::PostField.file('file', 'C:/test.flv')
c = Curl::Easy.new(upload_url)
c.multipart_form_post = true
c.http_post(post_data)
file_url = JSON.parse( c.body_str )['url']
# Create the video object
url = URI.parse( 'https://api.dailymotion.com/me/videos' )
req = Net::HTTP::Post.new(url.path)
req.set_form_data({ 'url' => file_url,
'access_token' => access_token
})
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.request(req)
puts response.body
尝试呼叫finish
http.finish
在response=http.request-req之后。在最后一个response=http.request-req之后尝试了它,但仍然出现了错误,它可能无法调用finish,因为在我的脚本前面的response=http.request-req之后也出现了错误,但这总是给我这个错误。。。IOError:HTTP会话尚未启动可能是在读取正文时启动了会话。请在JSON.parse response.body行之后尝试finish调用,这两个调用都用于access\u token=。。。和progress_url=…thx用于回答。。。看完尸体后打完电话但我还是收到了错误