2013-05-26 63 views
3

在我的控制器操作中,我正在使用render_to_string和jbuilder模板來爲API發送一個http post操作的對象,此API調用的結果是由控制器呈現。奇怪的超時::錯誤與控制器中的render_to_string和HTTParty操作

但是我得到一個奇怪的超時,然後我通過render_to_string呈現模型後調用HTTParty。

登錄:

[23:43:52.262] [18033] [info] Rendered admin/companies/companies.json.jbuilder (42.8ms) 
... nothing happens here (60s timeout) 
[23:44:52.314] [18033] [info] Completed 500 Internal Server Error in 60338ms 
[23:44:52.342] [18033] [fatal] 
Timeout::Error (Timeout::Error): 
    app/controllers/admin/companies_controller.rb:135:in `copy_to_environment' 
    lib/middleware/x_domain_request_polyfill.rb:46:in `_call' 
    lib/middleware/x_domain_request_polyfill.rb:16:in `call' 
[23:44:52.422] [18033] [info] Started POST "/api/v1/internal/company/create_company_copy.json" for 127.0.0.1 at 2013-05-26 23:44:52 +0200 
[23:44:52.465] [18033] [info] Processing by Api::V1::Internal::CompaniesController#create_company_copy as JSON 
[23:44:52.465] [18033] [info] User Agent: 
[23:44:52.466] [18033] [info] Completed 200 OK in 1ms (Views: 0.2ms | Models: 0.0ms) 
[23:44:52.466] [18033] [info] Response is {"status":"success"} 

控制器,操作:

json_string = render_to_string(:template => '/admin/companies/companies', :formats => [:json],locals: { company: @company }) 
api_action = "/api/v1/internal/company/create_company_copy.json" 
urlstring_to_post = 'http://localhost:3000'+ api_action 
@result = HTTParty.post(urlstring_to_post.to_str, :body => JSON.parse(json_string)) 
render(:show, :formats => [:html]) 

我奇怪的是,你可以在日誌中看到,實際控制人的行動失敗,因爲超時,因此中errorpage呈現給用戶,但是發佈到API的帖子已成功執行,但僅在超時之後。

任何建議表示讚賞!

回答

4

常見問題,但很難追蹤,如果太接近監測。

我想你運行rails server通常啓動一個單一的WEBrick服務器進程。

不幸的是,你會在本地測試時阻止自己。

修復:啓動另一個具有不同端口號的Rails服務器。或者開始像獨角獸一樣的東西,並將工人數量設置爲2或更多。

+0

太好了,非常感謝,現在第二臺服務器正在運行,我不再阻止自己了;) – jethroo