长时间无服务器的python请求?

问题描述 投票:1回答:2

我有几个遵循类似格式的python脚本:您传入一个日期,并且它是:-检查我的S3存储桶中文件名中具有该日期的文件,然后进行解析,或者-运行一个python脚本,执行某些操作分析该日期的文件(运行需要1个小时以上)

我正在寻找一种无服务器的解决方案,该解决方案可以让我在一定范围内调用这些函数,然后并行运行它们。由于我的python脚本持续时间长,因此AWS和Google Cloud Functions之类的服务由于超时(分别为15分钟和9分钟)而无法正常工作。我查看了Google Cloud Dataflow,但是不确定相对于我的相对简单用例而言是否过大。

尽可能减少中断的事情很重要,所以我倾向于使用AWS,Google Cloud等产品。

我还希望能够通过日志查看每个作业进度的仪表板,因此我可以看到哪些日期已完成,哪些日期存在错误(以及错误是什么)

google-cloud-platform software-design
2个回答
1
投票

正如您所说,使用Google Cloud Functions,您可以在部署期间最多配置9分钟的超时。

与数据流不同的解决方案,允许更长的超时时间:

App Engine Flex

[其他GCP产品允许更长的超时时间(最多60分钟)是App Engine Flex环境link

云任务

云任务也类似,但是是异步的。超时最多30分钟。这是一个任务队列,您将任务放入队列并快速返回。然后,队列中的一个或多个工作人员将一一评估任务。Cloud Tasks的通常输出是发送电子邮件或将结果保存到存储link

使用此解决方案,您可以为要处理的每个文件/文件名添加一个任务,并且每个任务的超时都为30分钟。


0
投票

Cloud Run路线图中已计划了长时间运行,但目前尚无日期。

今天,最好的推荐方式是use AppEngine in addition of Task Queue。使用推送队列,在manual scaling mode中部署时,您最多可以运行24小时。但是请注意,手动缩放不会缩放为0!

如果您喜欢容器,我知道GCP上有2种“奇怪”的解决方法:

可悲的是,它不像功能或云运行那样容易使用。您没有HTTP端点,只需用您想要和享受的日期来调用它即可。但是您可以将其包装到一个函数中,该函数执行对Cloud Build或AI Platform培训的API调用。

© www.soinside.com 2019 - 2024. All rights reserved.