我有一个 Rails 应用程序,在生产期间,它将由乘客和 Apache 启动/生成。我的问题是:自动启动所需的 Ruby 脚本/服务的最佳方法是什么?
我对Passenger的工作流程不太了解,因为它为请求生成了多个Rails处理程序,但我只需要让服务总共运行一次。
我是使用后台作业管理器(例如 Sidekiq、delayed_job 等)还是简单地将 Ruby 脚本包装在线程中并将初始化程序放在 Rails 配置文件夹中?
我有一个 Rails 应用程序,在生产期间,它将由乘客和 Apache 启动/生成。我的问题是:自动启动所需的 Ruby 脚本/服务的最佳方法是什么?
我对Passenger的工作流程不太了解,因为它为请求生成了多个Rails处理程序,但我只需要让服务总共运行一次。
我是使用后台作业管理器(例如 Sidekiq、delayed_job 等)还是简单地将 Ruby 脚本包装在线程中并将初始化程序放在 Rails 配置文件夹中?
启动应该只有一个运行实例的脚本的最简单方法是通过 ruby 脚本或 rake 任务。例如使用 Sidekick 时:
创建一个名为“my_worker.rb”的助手工作者
class MyWorker
include Sidekiq::Worker
def perform
# do something
end
end
从 rake 任务中调用它,例如:
require_relative '../../app/workers/my_worker'
namespace :disruption_worker do
desc "Schedule the My Worker in Sidekiq"
task :schedule => :unschedule do
MyWorker.perform_async
end
end