gpt4 book ai didi

ruby-on-rails - httparty 不使用本地主机

转载 作者:行者123 更新时间:2023-12-03 17:35:35 24 4
gpt4 key购买 nike

我正在制作 rails包含 API 的应用程序,我希望我的 Controller 调用这些 API 而不是处理 ActiveRecord .

我正在使用 HTTParty用于调用电话。当我执行以下操作时,它工作正常。

response = HTTParty.get('https://google.com')

但是当我尝试我的 API 调用时,它会保持处理状态,因为浏览器正在发送请求,即使我等了 15 分钟,但它什么也没呈现,我看到了 rails 控制台,但没有任何请求的迹象。

对于我的 API 调用,我正在使用这个:
response = HTTParty.get('http://localhost:3000/api/v1/score_sheets/9')

即使我试过这个:
response = HTTParty.get('http://0.0.0.0:3000/api/v1/score_sheets/9')

这也是:
response = HTTParty.get('http://127.0.0.1:3000/api/v1/score_sheets/9')

通过浏览器直接请求 https://localhost:3000/api/v1/score_sheets/9这将返回正确的 JSON .

问题:使用这种方法向 localhost 发送请求有什么问题?或任何其他可能的方式来做到这一点?

最佳答案

在开发模式下,您的应用程序的一个实例一次处理一个请求(在生产环境中,从 rails 4 开始,线程安全模式默认启用,但取决于应用程序的部署方式,这可能无效)。更准确地说,Rack::Lock 中间件一次只允许我们通过一个请求,因此这会影响该中间件下面的所有内容

如果在一个请求仍在处理期间另一个请求到达,那么它必须等待第一个请求完成。在您的情况下,这会导致您的代码永远等待:httparty 请求只能在当前请求完成时完成,但这只能在 httparty 请求完成时发生。

有不止一种方法可以解决这个问题,例如:

  • 您可以运行应用程序的多个实例(使用 pow 或乘客等工具很容易)
  • 您可以将您的应用程序分成 2 个,以便 api 由单独的应用程序提供
  • 关于ruby-on-rails - httparty 不使用本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24424186/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com