我正在计划使用rake任务为我的rails应用程序开发一个长时间运行的后台进程。 rake任务是否适合这种过程?理想情况下,我希望将其包装在Linux守护程序中,以便能够轻松地启动和结束该过程。
如果它不是最好的选择,哪个是替代品?我试图避免使用基于cron的解决方案,以避免担心时间表和在同一进程之间重复运行不同实例的可能性。
谢谢!
答案 0 :(得分:1)
您可以使用此delayed job尝试extension。
class MyJob
include Delayed::ScheduledJob
run_every 1.day
def display_name
"MyJob"
end
def perform
# code to run ...
end
end
或者使用Time.now + 5.minutes
手动将另一个作业入队,例如在当前作业完成内部执行方法之后。
答案 1 :(得分:0)
你看过delayed_job宝石吗?
https://github.com/collectiveidea/delayed_job
从他们的文件:
延迟::作业(或DJ)封装了在后台异步执行较长任务的常见模式。
这是Shopify的直接提取,其中作业表负责大量核心任务。其中包括:
答案 2 :(得分:0)
它可能取决于您需要运行的后台作业类型。
基本上,如果你需要对用户输入的数据进行某种后处理,比如为帖子渲染图像,与第三方资源进行一些异步集成等等,那么最好使用Sidekiq(是的,它比DelayedJob更好)人们建议)
但是如果你需要按计划运行某些东西,比如说夜间下载,清理被阻止的用户和东西,然后写一个rake任务并用cron任务启动它可能是一个非常有用的选项,因为你可以使用当您需要按需运行时,来自CLI的那些任务