【发布时间】:2015-08-01 21:43:08
【问题描述】:
我的 Rails 应用程序启动了一个仅发送文本消息的 Sidekiq 工作程序。我确信它不需要整个 Rails 环境来工作(它只需要客户端的电话和文本作为参数发送)。但目前工作人员加载它并因此从我的微小 DigitalOcean 液滴中获取大量内存(就像单独的 Rails 应用程序一样)。
有没有办法告诉工作人员路径到它应该需要的唯一文件?
【问题讨论】:
标签: ruby-on-rails ruby sidekiq
我的 Rails 应用程序启动了一个仅发送文本消息的 Sidekiq 工作程序。我确信它不需要整个 Rails 环境来工作(它只需要客户端的电话和文本作为参数发送)。但目前工作人员加载它并因此从我的微小 DigitalOcean 液滴中获取大量内存(就像单独的 Rails 应用程序一样)。
有没有办法告诉工作人员路径到它应该需要的唯一文件?
【问题讨论】:
标签: ruby-on-rails ruby sidekiq
您可以将 sidekiq 工作器完全分离为独立的(一个或两个文件),并将其作为一个单独的进程在您的数字海洋实例上运行。然后在你的 Rails 应用程序中,当你准备好工作时,你只需将工作推送到 redis 中:
Sidekiq::Client.push({
'class' => TextMessageWorker,
'queue' => queue_name,
'args' => [number, message]
})
这有明显的限制(没有安排 AFAIK),但这应该满足您对这个小示例的需求。
【讨论】:
您可以使用-r 来请求文件而不是引导 Rails。
【讨论】: