Ruby on rails 赫罗库。。。推动而不影响长时间运行的方法

Ruby on rails 赫罗库。。。推动而不影响长时间运行的方法,ruby-on-rails,heroku,upload,Ruby On Rails,Heroku,Upload,我在rails/heroku中有一个长期运行的导入方法。 我正在导入一个10兆的csv,需要一段时间 当它运行时,我的一个同事改变了一个不相关的视图,并执行git.push 我的进口被杀了 现在,;我可以告诉他在我运行导入时不要做git.push。我们有一个客户端,所有导入都由开发团队完成 未来,我们将在世界各地拥有数十家客户。 我们无法控制他们何时选择导入 所以我的问题是。。。 其他人是如何防范这种情况的?如何确保正在运行的作业不会因为我想更改某些内容而被关闭?这里的问题是导入方法不可靠 He

我在rails/heroku中有一个长期运行的导入方法。
我正在导入一个10兆的csv,需要一段时间

当它运行时,我的一个同事改变了一个不相关的视图,并执行git.push

我的进口被杀了

现在,;我可以告诉他在我运行导入时不要做git.push。我们有一个客户端,所有导入都由开发团队完成

未来,我们将在世界各地拥有数十家客户。 我们无法控制他们何时选择导入

所以我的问题是。。。
其他人是如何防范这种情况的?如何确保正在运行的作业不会因为我想更改某些内容而被关闭?

这里的问题是导入方法不可靠

Heroku在推你的dyno时杀死它。如果dyno占用了太多内存,或者它已经存在了很长时间,或者它们正在重新平衡负载,或者如果您扩展该组中的进程数量,Heroku也可能会杀死它。此外,EC2实例可能由于各种原因而死机,包括电源、网络、存储和人为故障

如果导入始终成功对您很重要,那么您需要适当地构建应用程序。将要导入的数据暂时放在S3中,以防收到上传的dyno被杀死。在数据库中放一条记录,上面写着“这东西需要导入”。导入时,以事务方式导入,因此导入完全成功或完全失败

这是一个很大的工作吗?可能是,也可能不是,取决于您选择的工具。(通常这对我来说很容易。)然而,这是你唯一的实际选择

传统的思想是确保您的基础架构永远不会出现故障,这导致了具有多个冗余光纤通道上行链路的SAN将成倍增加冗余交换机,将成倍增加冗余存储阵列。这导致了热插拔CPU和其他企业功能™. 但事实证明,即使您完成了所有这些,您的基础设施仍然会失败


新学派认识到失败是不可避免的。忘记所有那些花哨的东西:大量购买商品硬件,构建应用程序以容忍失败。这是EC2模型,这是Heroku模型。相应地进行设计。

这里的问题是导入方法不可靠

Heroku在推你的dyno时杀死它。如果dyno占用了太多内存,或者它已经存在了很长时间,或者它们正在重新平衡负载,或者如果您扩展该组中的进程数量,Heroku也可能会杀死它。此外,EC2实例可能由于各种原因而死机,包括电源、网络、存储和人为故障

如果导入始终成功对您很重要,那么您需要适当地构建应用程序。将要导入的数据暂时放在S3中,以防收到上传的dyno被杀死。在数据库中放一条记录,上面写着“这东西需要导入”。导入时,以事务方式导入,因此导入完全成功或完全失败

这是一个很大的工作吗?可能是,也可能不是,取决于您选择的工具。(通常这对我来说很容易。)然而,这是你唯一的实际选择

传统的思想是确保您的基础架构永远不会出现故障,这导致了具有多个冗余光纤通道上行链路的SAN将成倍增加冗余交换机,将成倍增加冗余存储阵列。这导致了热插拔CPU和其他企业功能™. 但事实证明,即使您完成了所有这些,您的基础设施仍然会失败


新学派认识到失败是不可避免的。忘记所有那些花哨的东西:大量购买商品硬件,构建应用程序以容忍失败。这是EC2模型,这是Heroku模型。相应地设计。

谢谢。。我不确定我能在一次交易中加载50万个产品。我可能不得不对文件大小设置一个上限?解释失败的原因。谢谢。好吧,它不一定是事务性的,只要它可以被中断并重新尝试而不会引起问题。谢谢。。我不确定我能在一次交易中加载50万个产品。我可能不得不对文件大小设置一个上限?解释失败的原因。谢谢。好吧,它不一定是事务性的,只要它可以被中断并重新尝试而不会引起问题。