澄清...所以后台工作不会占用应用程序资源(在Rails中)?

时间:2010-06-02 19:28:57

标签: ruby background-process

我正在努力更好地掌握后台工作的内部运作以及它们如何提高绩效。

我理解,目标是让应用程序尽可能快地向用户返回响应,因此您不希望解析一个需要10秒钟的大量提要,因为它会阻止应用程序从能够处理任何其他请求。

因此,建议将执行时间超过500毫秒的任何操作放入排队的后台作业中。

我不明白的是,这不就是延迟同样的问题吗?我知道调用该后台作业的用户将立即获得响应,但是如果另一个用户在后台作业启动时出现(并且需要10秒才能完成),该用户不必等待该怎么办?

或者主要问题是,requests是唯一可以一次发生的事情,而另一方面,请求可以在一个+后台作业处于运行中时启动?

这是对的吗?

1 个答案:

答案 0 :(得分:1)

后台流程的想法是它负责所有长时间运行的流程。

基本上,它是一个在Web服务器之外运行的外部应用程序,它有一个或多个处理请求的进程。

因此,如果有另一个用户请求页面并不重要,因为作业没有占用网络服务器,用户将不必等待任何事情完成。

如果该用户也做了一些放在后台队列中的东西,那么它只会堆叠在那里直到第一个完成(或者在有多个进程处理它的情况下,只要有一个可用)。

希望这个解释能让它更加清晰:)