我有几个遵循类似格式的 python 脚本:你传入一个日期,它或者: - 检查我的 S3 存储桶中文件名中包含该日期的文件,并解析它或者 - 运行一个 python 脚本,对它进行一些分析那个日期的文件。重要的是我需要有至少 1 小时的超时时间。
我正在寻找一种无服务器解决方案,它可以让我在一系列日期上调用这些函数,并并行运行它们。由于我的 python 脚本持续时间很长,AWS 和 Google Cloud Functions 等服务由于超时(分别为 15 分钟和 9 分钟)而无法工作。我已经查看了 Google Cloud Dataflow,但不确定这对于我相对简单的用例来说是否太过分了。
尽可能减少中断的东西很重要,所以我倾向于使用 AWS、谷歌云等的东西。
我还希望能够看到带有日志的每个作业进度的仪表板,以便我可以看到哪些日期已完成以及哪些日期有错误(以及错误是什么)
AWS Lambda 或 GCP Cloud Functions 等微服务器的性质,根据他们的定义,是短期运行的。如果一个计算资源可能运行很长时间(我认为一个小时是很长的时间),那么微服务故事就不合适了。现在让我们看看我们真正想要的是什么。我假设你想要:
一种可能的解决方案是使用 GCP 计算引擎和“托管实例组”的概念。使用这项技术,您可以定义一个 Compute Engine 模板,该模板将根据需要使用尽可能多(或尽可能少)的 CPU 和 RAM 来启动 Linux 或 Windows 虚拟机实例。实例的数量取决于您如何定义负载……包括降至零。当您定义 Compute Engine 模板时,您对其拥有 100% 的控制权,包括通过启动脚本定义初始启动应用程序。我可以想象你编写了一个运行你的应用程序的启动脚本。
虽然这确实比“你带来代码,我们带来其他一切”的口号更重要,但它是游戏状态。其他潜在的解决方案是(正如您所暗示的)检查您处理的性质并将其细分为更细粒度和更小的工作单元。
如果 Compute Engines 感觉太多了,另一种选择是采用 Kubernetes 并拥有一个包含包含您的应用程序的 pod 的集群。
参考:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句