我正在开发一个Redmine插件,我创建了一个方法,在这个方法中我发送了2个HTTP POST请求,以便将文件附加到文档中。
执行完第一个请求后,虽然请求已经成功完成,但我还是得到了一个Timeout::Error (Timeout::Error)
,下面是来自Webrick的错误代码
Timeout::Error (Timeout::Error):
/usr/local/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
/usr/local/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
/usr/local/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
/usr/local/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
/usr/local/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
/usr/local/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
/usr/local/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
/usr/local/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
/usr/local/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
/usr/local/lib/ruby/1.9.1/net/http.rb:1293:in `request' rest-client (1.6.7) lib/restclient/net_http_ext.rb:51:in `request'
/usr/local/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
/usr/local/lib/ruby/1.9.1/net/http.rb:745:in `start'
/usr/local/lib/ruby/1.9.1/net/http.rb:1284:in `request'
...
...
Started POST "/uploads.json?attachment_id=1&filename=testFile.txt" for <server_IP_address> at 2014-04-02 09:15:28 +0200
Processing by AttachmentsController#upload as JSON
Parameters: {"attachment_id"=>"1", "filename"=>"testFile.txt"}
Current user: <user> (id=3)
Saving attachment '/home/user/Redmine/redmine-2.4.2/files/2014/04/140402091528_testFile.txt' (72 bytes)
Rendered attachments/upload.api.rsb (1.7ms)
Completed 201 Created in 87.9ms (Views: 7.9ms | ActiveRecord: 11.4ms)
您可以看到,我在响应中得到了201状态,因此它工作了,但我有这个超时错误,执行停止在那里。
下面是我的代码:
uri = URI.parse("http://<server_IP_address>:3000/uploads.json")
http = Net::HTTP.new(uri.host, uri.port)
@file = File.new("/home/testFile.txt")
@csrfToken = session[:_csrf_token]
request = Net::HTTP::Post.new(@uri.path+"?attachment_id=1&filename=testFile.txt", initheader = {'Content-Type' => "application/octet-stream", 'X-CSRF-Token' => @csrfToken, 'X-Redmine-API-Key' => "my_key"})
request.body = @file.read
@response = http.request(request)
@upToken = @response.body
@secondResponse = RestClient.post 'http://<server_IP_address>:3000/documents/150/add_attachment', {:multipart => true, :utf8 => "\u2713", :authenticity_token => @csrfToken, :attachment => { "1" => {:filename => "testFile.txt", :description => "Dropbox blabla", :token => @upToken}}, :commit => "Add"}, :'X-Redmine-API-Key' => "mykey"
我也尝试过Apache Web服务器,第一个请求运行得很好,我只在Webrick服务器上运行Redmine时遇到这个问题。
你知道这个错误是从哪里来的吗?我怎样才能摆脱它?
发布于 2014-04-14 09:00:51
您需要做的是更改webrick服务器中的请求超时值,为此请检查以下问题的答案:how to set request timeout in rails ( thin or webrick server)
https://stackoverflow.com/questions/22804466
复制相似问题