jquery - 将命令行应用程序移植到 Sinatra/Ruby on Rails 应用程序

标签 jquery ruby-on-rails ruby ajax sinatra

我有一个运行几分钟的 Ruby 命令行应用程序。在执行过程中,在应用程序的每个阶段完成后,我将几条消息打印到命令行输出。

这只是为了让用户知道应用程序运行在哪个阶段,并使应用程序提供更多信息。

现在,我想将应用程序移植到 Sinatra 应用程序。我已经准备好整个框架。我正在使用 jQuery AJAX 将输出结果打印回给用户。

问题是,它仅在整个应用程序运行后才呈现输出,因此使其无响应(与命令行应用程序相比)。在某些情况下,整个应用程序甚至可能需要 2-3 分钟才能运行,然后将结果打印到网页上。

这等同于执行 POST,而我从此处的 jQuery AJAX 调用中一无所获。 有没有一种方法可以将我打印到 STDOUT 的消息发送回网页上的用户。

这可能是一个非常简单的问题,但我是新手,过去没有做过类似的事情。

如果您需要更多信息,请告诉我。

最佳答案

你说的是执行状态。有几种方法可以解决这个问题,使用服务器发送事件 (SSE)、使用 websockets 或只是轮询更改。

最简单的解决方案是轮询更改。有另一个 Ajax 方法,它每隔一段时间向网站发送一个请求,服务器将返回包含长时间运行进程的当前状态的响应。

在你的长期运行过程中,你需要的是更新状态的里程碑,并且其他人可以访问它,即某种数据库(Redis,Memcached,SQL-ish),或者通过线程但是这不能很好地扩展。

关于jquery - 将命令行应用程序移植到 Sinatra/Ruby on Rails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26963844/

相关文章:

javascript - 滚动列表不工作

jquery - 使用 Python/Selenium 从日期选择器中选择日期后提取格式化日期

ruby-on-rails - rails : change default JSON structure

ruby-on-rails - 如何在 Ruby on Rails 中创建一个 anchor 并重定向到这个特定的 anchor

javascript - 如何编写 AJAX 来发布数据

javascript - 我连续推送了2条消息到消息队列,但它们似乎没有被连续调用

ruby-on-rails - 接收电子邮件 POP3 并保存在数据库中

ruby-on-rails - 如何在 Heroku 中编辑 gem

ruby-on-rails - 在 Rails 应用程序中查找未使用的代码

ruby-on-rails - Geocoder Gem 反向地理编码