处理非常长时间运行的rake任务

JZ.*_*JZ. 14 rake ruby-on-rails delayed-job rake-task

我有兴趣运行一个非常长时间运行的rake任务,这个任务需要几个小时才能完成,我有兴趣了解处理这个问题的最佳实践.

我找到的可能的解决方案:

  1. 设置一个cron作业
  2. delayed_job的
  3. resque

cron似乎是一个简单的设置解决方案,但它是否适合长期任务?您使用什么以及您的解决方案的优点/缺点是什么?

JP *_*shy 31

我个人喜欢Resque,你可以使用resque-scheduler gem处理长时间运行或定期任务.

如果您不必经常运行任务,则可以将rake任务妖魔化,以确保它在SSH会话死亡时继续运行.

尝试这样的事情:

nohup rake my:task &
Run Code Online (Sandbox Code Playgroud)

nohup将输出发送到nohup.out您运行任务的目录中,并且还将离开您的ssh会话而不会使进程死亡,其次将&将其作为deamon运行.