Strange Timeout :: Controller Action中的render_to_string和HTTParty出错

在我的控制器操作中,我使用带有jbuilder模板的render_to_string来向API呈现http post操作的对象,此API-Call的结果应该由控制器呈现。

但是我得到一个奇怪的超时然后我通过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]) 

对我来说奇怪的是,你可以在日志中看到实际的控制器动作由于超时而失败,因此错误被呈现给用户,但是发布到API的post成功执行但仅在超时之后。

任何建议赞赏!

常见问题,但如果太靠近监视器则难以跟踪。

我猜你运行的rails server通常会启动一个WEBrick服务器进程。

不幸的是,你会在本地测试时阻止自己。

修复:启动另一个具有不同端口号的rails服务器。 或者启动类似独角兽的东西并将工人号码设置为2或更多。