【问题标题】:Rails HTTParty Getting Timeout::ErrorRails HTTParty 超时::错误
【发布时间】:2012-12-22 15:45:04
【问题描述】:

我有一个以 API 为中心的应用程序 (/api/v1/users),它以 JSON 格式简单地返回所有用户。

我的问题是,如果我在控制器上调用该路由,它会返回“Timeout::Error” 有什么问题?

class BaseController < ApplicationController
  def index
    return HTTParty.get('http://localhost:3000/api/v1/users').body
  end
end

更新

  • users_controller.rb (/api/v1/users)
  • application_controller.rb

https://gist.github.com/4359591

日志

http://pastie.org/5565618

【问题讨论】:

  • 你能展示控制器的负责返回 JSON 的方法吗?
  • @JiříPospíšil 用更多信息更新了我的问题
  • 可以分享一下日志吗?

标签: ruby-on-rails httparty


【解决方案1】:

如果我理解正确,您有一个 API 端点,位于 /api/v1/users,而您的 BaseController#index 正在调用该方法?

如果这是正确的,在同一个 rails 进程中,并且您正在开发模式下进行测试(从您的 url 可以看出),那么您只有一个进程正在运行,它一次只能处理一个请求。因此,如果您向BaseController#index 发起请求,它将向您自己的测试服务器发起另一个请求,该服务器正忙,它会一直等到超时。

如果您想测试您的 API,我会查看一个客户端工具,例如Postman

HTH。

【讨论】:

  • 是的,没错。因此,使用 Postman 扩展以及 Rails 的控制台测试了我的 API,一切正常。如何在同一个应用程序中使用多个进程?
  • 虽然这是可能的,但如果您安装 apache/nginx 和用户乘客,例如,这是很多开销。我不明白你为什么要这样做?这是一个走向麻烦的场景。因为每个单个请求都会占用您服务器的两个请求。为什么不直接调用代码呢?
  • 因为我正在构建一个网络/移动混合应用程序,其中两个共享相同的 API
  • 它不能在 webrick/unicorn/thin 服务器上运行,所以在乘客/nginx 模块上运行应用程序解决了这个问题,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多