Rails或Sinatra应用程序 - 如何维护后台线程

时间:2014-04-22 14:29:12

标签: ruby-on-rails ruby multithreading http sinatra

我想在Sinatra或Rails服务器上维护一个数据结构(无关紧要),可以访问所有到达它的HTTP请求(即支持并发修改)。我不想依赖于数据库或类似数据库,因为这不允许我为修改此数据结构编写回调代码并将并发块放在HTTP响应线程上。

由于HTTP是无状态的,显然没有简单的方法来实现这一点。

如何在不重新使用外部程序和中间件的情况下,为进入HTTP服务器的所有请求创建一个在后台维护数据的进程?是否需要我修改Rails或Sinatra来实现这一目标?甚至在红宝石之外还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

使用Sinatra时,您只需在应用程序结束时编写一个代码:

http://blog.markwatson.com/2011/11/ruby-sinatra-web-apps-with-background.html

使用此功能,您可以维护一个即使在http请求进出时也可以执行操作的工作人员。

Sinatra还有分别在每个请求之前和之后运行的方法beforeafter

因此,如果您想在处理每个请求之前将数据添加到数据结构,您可以:

before do puts request end

使用这些工具,您可以轻松实现您想要的目标。