Фоновые задания в настольном приложении Ruby - PullRequest
1 голос
/ 08 сентября 2011

Я работаю над кроссплатформенным настольным приложением с графическим интерфейсом, написанным на Ruby.Приложение будет использовать MacRuby для предоставления графического интерфейса в Mac OS X и будет использовать Qt для графического интерфейса на других платформах.Приложение представляет собой мультимедийный инструмент, который позволяет выполнять такие операции, как копирование компакт-дисков или DVD-дисков и их кодирование в различные форматы, или перекодирование мультимедийных файлов из одного формата в другой.

Эти задачи занимают много времени и поэтому должны выполнятьсяв фоновом режиме, чтобы не заморозить графический интерфейс во время их выполнения.Кроме того, фоновые задания должны иметь возможность отменяться и / или приостанавливаться, а также иметь возможность сообщать о состоянии и ходе выполнения в графический интерфейс.Также может потребоваться назначить приоритеты заданиям, чтобы задания с более высоким приоритетом выполнялись раньше заданий с более низким приоритетом, а также иметь зависимости между заданиями, чтобы задание не начало выполняться, пока не будут завершены все его зависимости.

Мой вопрос: какие инструменты или методы лучше всего подходят для обработки подобных заданий в фоновом графическом интерфейсе / настольном приложении Ruby?Я бы предпочел не «свернуть свой» диспетчер заданий, чтобы порождать процессы или потоки и управлять запуском и остановкой заданий и т. Д.

Редактировать: после публикации этого вопроса я понял, что задал очень похожий вопросдля решения C ++ некоторое время назад.Мои требования к этому решению на Ruby такие же, как те, что я опубликовал для решения C ++ здесь: C ++ master / worker

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Я недавно использовал resque для выполнения фоновых заданий в проекте ruby.Конечно, это было приложение Rails, но, насколько я знаю, ничто не мешает кому-то использовать его в настольном приложении, если оно совместимо с MacRuby и вы не против установить Redis.

1 голос
/ 09 сентября 2011

К сожалению, большинство бегунов фоновых заданий Ruby, с которыми я сталкивался, предназначены для Rails.

Это может быть немного более низкий уровень, чем вы ищете, но EventMachine приходит на ум. Если вы готовы написать свой собственный высокоуровневый код Job / Dependency, вы можете использовать EM для его питания и обработки грязной работы с потоками (или разветвления, если хотите). Не уверен насчет паузы ...

Я бы порекомендовал взглянуть на EventMachine :: Deferrable и EventMachine :: DeferrableChildProcess, чтобы увидеть, могут ли они работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...