Каковы наилучшие способы запуска сценария Ruby в качестве подпроцесса / другого потока из Sinatra? - PullRequest
5 голосов
/ 13 сентября 2011

У меня есть приложение Sinatra, которое я планирую разместить на Heroku.

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

Мой план состоит в том, чтобы иметь кнопку для каждого процесса, на которую я могу щелкнуть, и удаление будет происходить в фоновом режиме.

Я не уверен, каков наилучший способ сделать это, осложненный тем, что позволит Heroku.

1 Ответ

4 голосов
/ 13 сентября 2011

Существует драгоценный камень под названием hirefire специально для этого:

HireFire автоматически «нанимает» и «увольняет» (он же «весы») работников с отложенными заданиями и спасателями на Героку.Когда нет заданий в очереди, HireFire уволит (закроет) всех работников.Если есть работа в очереди, то она будет нанимать (раскручивать) рабочих.Количество нанятых работников зависит от количества заданий в очереди (это соотношение может быть настроено вами).HireFire отлично подходит как для приложений с высоким, средним и низким трафиком.Это может сэкономить вам много денег, наняв работников только при наличии незавершенных работ, а затем снова уволив их после обработки всех заданий.Он также способен значительно сократить время обработки, автоматически нанимая больше работников при увеличении размера очереди.

...