Ruby on rails 当时间非常重要时,我如何在ruby(on rails)中调度进程/任务?

Ruby on rails 当时间非常重要时,我如何在ruby(on rails)中调度进程/任务?,ruby-on-rails,ruby,redis,sidekiq,Ruby On Rails,Ruby,Redis,Sidekiq,我正在用RubyonRails编写一个应用程序,有一个关于我希望在特定时间点执行的任务/流程的问题 目前我正在使用Redis和。 这非常有效,因为Sidekiq从2.0版开始就支持计划作业。 它们看起来像这样 SomeWorker.perform_in(5.days, 'bob', 13) SomeWorker.perform_at(5.days.from_now, 'bob', 13) 然而,时间对我的应用程序来说非常重要,Sidekiq似乎并不特别在意。 默认情况下,计划作业每15秒轮询

我正在用RubyonRails编写一个应用程序,有一个关于我希望在特定时间点执行的任务/流程的问题

目前我正在使用Redis和。 这非常有效,因为Sidekiq从2.0版开始就支持计划作业。 它们看起来像这样

SomeWorker.perform_in(5.days, 'bob', 13)
SomeWorker.perform_at(5.days.from_now, 'bob', 13)

然而,时间对我的应用程序来说非常重要,Sidekiq似乎并不特别在意。 默认情况下,计划作业每15秒轮询一次:

Sidekiq.configure_server do |config|
  config.poll_interval = 15
end
这可以更改为,比方说,1秒,但Sidekiq不建议这样做:

警告:如果您有几十个或数百个Sidekiq进程,则应显著提高轮询间隔。对于大多数人来说,进程计数*5是一个合理的轮询间隔。否则,您的进程将关闭Redis,使其不断寻找要运行的新计划作业


允许我每秒有多个进程(进程很小)的最佳选项是什么?执行时间尽可能接近设置的执行时间(相差不超过1秒)?

您可以在任何时候使用gem,您可以在Schedule.rb中为任务设置时间,您需要使用crontab您可以设置环境,对于crontab,请使用谷歌搜索了解更多详细信息

请正确使用流程和作业,以便我们能够准确地进行沟通。Sidekiq进程有许多线程,每个线程一次处理一个作业


如果您有3个Sidekiq进程,并将轮询间隔设置为3,则平均每秒将检查一次计划的作业集。根据您的需求进行必要的计算。

cron
中,最短时间通常为30-60秒。很多。你能再详细一点吗?很好的答案包括一个例子。而且,在英语中,我们通常用句号来分隔不同的想法。使用太多的“和”会让你的帖子很难理解。你可以访问github上的gem存储库,它会解释我想说什么,以及你希望有多少Sidekiq进程?@D-side我不希望有太多,因为这对我来说是一个有趣/学习的项目。但我希望它能够每秒处理10-20个进程。