27

我来自 Java 世界,在 ruby​​/rails 世界中不断听到“工人”这个词。它是什么?一个线程?

4

3 回答 3

32

取决于上下文。

工作人员通常是在您的应用程序请求周期之外运行的进程。像resquedelay_job这样的Ruby 库通常用于管理工作队列。

另一方面,如果我们谈论 Web 服务器,“worker”这个词有时可以与线程或进程互换使用(即:nginx 或 apache“workers”)。

于 2012-04-26T17:22:21.283 回答
8

通常在“Rails 世界”中,worker 指的是优先队列类型系统,该系统具有单独的进程弹出任务以在应用程序周期之外执行。这些系统中最受欢迎的系统之一是DelayedJobs。这使用数据库迁移来添加一个表来保存要由工作进程执行的任务。然后,您可以配置任意数量的工作进程来检查 DelayedJobs 队列表并执行序列化任务。使用 DelayedJobs,您不仅可以设置不同任务的优先级,还可以设置执行任务的时间范围,例如。从现在起 1 小时后发送一封特定的电子邮件。

于 2012-04-26T17:18:08.623 回答
3

运行您的 rails 应用程序的服务器使用工作人员来完成应用程序所需的所有事情。它发送电子邮件、运行请求、执行计算等。您需要的工作人员数量取决于您的 Web 应用程序需要执行的流量和计算量。

于 2012-04-26T17:09:10.480 回答