2015-11-30 161 views
1

在我的Ruby on Rails应用程序中,用户可以授予我以他们的名义发布推文的权限,以便他们可以从应用程序发送预先填充的推文。这是流程:后台Ruby on Rails请求

  • 要求到我的服务器
  • 服务器请求发送到Twitter的服务器
  • 基于Twitter的响应,我的用户得到响应。

Twitter的请求阻止我的应用程序。我使用ActiveJob与resque进行其他与第三方应用程序和电子邮件的通信,但在这种情况下,我想根据Twitter服务器响应提供用户响应。

是否有可能以某种方式做?:

  • 要求到我的服务器
  • 服务器请求发送到Twitter的服务器
  • 把这个在等待,所以我的服务器可以为其他请求
  • 得到通知上叽叽喳喳服务器响应和发送回应给我的用户

这不是一个问题,我的用户发送推文有t等等。我只是不希望其他用户等待。

+0

你在使用独角兽吗?旅客? https://github.com/phusion/passenger或Puma? https://github.com/puma/puma –

+0

您是否尝试过在第二个窗口/选项卡中运行另一个请求,而第一个请求处于“等待”状态?你可能会发现,一切正如你所希望的那样工作。 – Jon

+0

@ilanberci我使用Nginx的乘客。 – Jos

回答

2

一个解决方案是使用ActiveJob和rescue来请求twitter,当twitter响应时,您可以使用实时引擎来回复用户。

另一种解决方案是使用支持多线程(puma,rainbows!..)的服务器。

我个人认为我会用实时服务来解决这个问题。虽然它增加了一些开销,但从长远来看,它将有助于维持更多的并发用户。