从Sinatra运行Ruby脚本作为子进程/另一个线程的最佳方法是什么?

Chr*_*ngs 5 ruby heroku sinatra

我有一个Sinatra应用程序,我计划在Heroku上托管.

该应用程序部分地从网络周围的其他页面中抓取大量信息并将信息存储到数据库中.这些报废操作是一个缓​​慢的过程,所以我需要它们在与我的Sinatra应用程序分开的另一个线程/进程中运行.

我的计划只是为每个进程提供一个按钮,我可以单击该按钮,并且将在后台进行报废.

我不确定什么是最好的方法来做到这一点,复杂的是Heroku允许的.

Mic*_*ohl 4

有一个名为hirefire的 gem专门用于此目的:

HireFire 自动“雇用”和“解雇”(又名“缩放”)Heroku 上的延迟作业和 Resque 工作人员。当没有队列作业时,HireFire 将解雇(关闭)所有工作人员。如果有排队的作业,那么它将雇用(启动)工人。雇用的工人数量取决于排队作业的数量(比例可以由您配置)。HireFire 非常适合高、中和低流量应用。仅在有待处理的工作时才雇用工人,然后在所有工作处理完毕后再次解雇他们,可以为您节省大量资金。当队列大小增加时,它还能够通过自动雇用更多工作人员来显着减少处理时间。