【问题标题】:Rest Client not responding if form submited in rails如果表单在 Rails 中提交,Rest Client 没有响应
【发布时间】:2014-05-20 05:06:45
【问题描述】:

我有一个 form_tag 和一些 text_field_tag,我想要的是当我通过 Ajax 提交表单时,它会转到特定控制器的特定操作,我使用 rest_client gem 来访问特定 URL并从该 URL 获取响应并在 ajax 请求中发送该响应。

但是当表单被提交并进入特定操作时,其余客户端假设处理GET 请求 (基本上是对同一应用程序的另一个控制器的请求)

并返回一些响应,以便我可以在 ajax 请求中呈现该 json 响应,但我总是得到超时错误,我已经尝试通过更改超时但没有成功。

当我在 rails console 中运行该请求时,我能够从 rest_client 获得响应。

【问题讨论】:

  • 你能发布代码示例吗?尤其是您发出 ajax 请求的视图、控制器操作和 javascript 代码。

标签: jquery ruby-on-rails ruby ajax ruby-on-rails-3


【解决方案1】:

您似乎在单线程容器(如 WebBrick)上运行您的 rails 应用程序。这意味着服务器一次只能处理一个单个请求

在您的用例中,请求在控制器中发起,并发出 RestClient 调用,然后它卡在服务器的队列中等待上一个调用完成处理,有效死锁你的网络服务器。

当您从rails console 运行RestClient 调用时,服务器没有任何请求处理,因此调用通过。

您可以通过更改架构以启用接收多个请求(使用 EventMachine,或在 unicorn 服务器上运行您的应用程序)来解决此问题,但它仍然有异味。我建议你想出一种方法来调用另一个控制器的逻辑而不向自己发出新的 Web 请求,这有点矫枉过正,而且开销很大。

【讨论】:

  • 我 +1 是因为我需要了解多线程和并发连接 :)
  • 是否有任何可用的示例(而不是聊天示例)使用 eventmachine for rails 应用程序来处理多个请求。
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 2017-11-28
  • 2013-10-28
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多