这里的问题是您的导入方法不可靠。
Heroku 在收到推送时会杀死您的测功机。如果 Heroku 使用太多内存,或者如果它已经存在很长时间,或者如果他们正在重新平衡负载,或者如果您扩展该组中的进程数量,Heroku 也可能会杀死您的测功机。此外,该 EC2 实例可能会因各种原因而启动和死亡,包括电源、网络、存储和人为故障。
如果导入总是成功对您很重要,那么您需要适当地构建您的应用程序。将要导入的数据暂时放在 S3 中,以防收到上传的 dyno 被杀死。在您的数据库中输入一条记录,说明“这个东西需要导入”。导入时,以事务方式导入,因此导入完全成功或完全失败。
工作量很大吗?也许,也许不是,取决于您选择的工具。( Sidekiq通常对我来说很容易。)但是,这是您唯一真正的选择。
旧的思想是确保您的基础设施永远不会出现故障,从而导致具有多重冗余光纤通道上行链路的 SAN 到多重冗余交换机再到多重冗余存储阵列。这导致了热插拔 CPU、用于 RAM 的 RAID和其他 Enterprise Features™。但事实证明,即使你完成了所有这些,你的基础设施仍然失败。
新学派认识到失败是不可避免的。忘记所有花哨的东西:大量购买商品硬件,并构建您的应用程序以容忍故障。这就是 EC2 模型,这就是 Heroku 模型。相应地设计。