2012-03-26 2 views
13

Я заинтересован в выполнении очень долгого рейк-задачи, для выполнения которого потребуется несколько часов, и мне интересно узнать о лучших методах решения этой проблемы.Работа с очень длинной задачей рейка

Возможные решения я нашел:

  1. Настройка хрон
  2. delayed_job
  3. спасательное

хрон кажется простым решением для установки, но он идеально подходит для очень длинная задача? Что вы используете и каковы преимущества/недостатки вашего решения?

ответ

30

Лично я люблю Resque, вы можете использовать драгоценный камень resque-scheduler для решения длительных или периодических задач.

Если вам не нужно выполнять свою задачу очень часто, вы можете демонизировать задачу рейка, чтобы убедиться, что она продолжает работать, если ваш сеанс SSH умирает или что-то в этом роде.

Попробуйте что-то вроде этого:

nohup rake my:task & 

nohup пошлет вывод nohup.out в каталоге вы запускаете задачу в, и также позволит оставить SSH сессию без процесса умирания, во-вторых, & будет работать это как деамон.

+0

Похоже, что он удовлетворит мои потребности. Я собираюсь оставить этот вопрос открытым на некоторое время, прежде чем я соглашусь услышать других. Благодаря! –

+0

Без проблем! Надеюсь, вы найдете решение, которое вы ищете! Отправьте свое решение, как только найдете его! –

1

В одном приложении, которое я создал, пользователи имели возможность загружать PDF-файлы, которые были уменьшены при загрузке, чтобы создать изображения предварительного просмотра. Поскольку PDF-файлы могут быть чрезвычайно большими, эскиз может занять некоторое время и должен был работать в фоновом режиме. Для этого я использовал

  • Paperclip для загрузки,
  • delayed_paperclip драгоценного камня в руки от миниатюр до фонового процесса,
  • Resque, подкрепленной Redis, для обработки очереди рабочей и
  • драгоценный камень God, чтобы запустить работников Redis и Resque и следить за всем шебангом.

С другой стороны, вы получаете отличный графический интерфейс Resque, чтобы просматривать ваших работников в действии, и у вас есть Бог там, чтобы следить за (и убивать и перезапускать) беглые процессы (которые, как правило, бит, когда вы обрабатываете PDF-файлы в ImageMagick), делая все это намного более стабильным и надежным.

На минусовой стороне это сложнее, чем задание cron. Но, когда cron запускает длительный, интенсивный в памяти процесс, который не контролируется, кажется рецептом для бедствия для меня.

Надеюсь, что это поможет!

Смежные вопросы