如何让 Sidekiq worker 不加载 Rails 环境

How to make Sidekiq workers not to load Rails environment

我的 Rails 应用程序启动了一个只发送短信的 Sidekiq worker。我确信它不需要整个 Rails env 来工作(它只需要客户端的 phone 和文本作为参数发送)。但目前工作人员加载它并因此从我的小 DigitalOcean 液滴中获取大量内存(就像单独的 Rails 应用程序一样)。

有什么方法可以告诉工作人员它应该需要的唯一文件的路径吗?

您可以将您的 sidekiq worker 完全解耦为独立的(一个或两个文件),并且 运行 它作为您的数字海洋实例上的一个单独进程。然后在您的 rails 应用程序中,当您准备好完成工作时,您只需将作业推送到 redis:

Sidekiq::Client.push({
    'class' => TextMessageWorker,
    'queue' => queue_name,
    'args'  => [number, message]
})

这有明显的局限性(没有安排 AFAIK),但这应该可以满足您对这个小示例的需求。

您可以使用 -r 来要求文件而不是引导 Rails。