有多种方法可以在GCP平台上执行长时间的后台任务。我正在寻找最合适,最直接的解决方案来执行数据处理任务(清理原始csv文件并将其推入bigquery)。我探索并尝试过的选项:
1。具有Pub / Sub的云函数:对于每个传入的文件,执行一个隔离的函数,该函数将单个文件清除并将其存储到BigQuery。
2。数据流:创建管道并使用云函数事件结合Pub / Sub触发它
3。 [App Engine and Cloud Tasks:创建一个烧瓶应用程序,其中包含一个路由和参数(例如,文件路径),该路径和参数在被调用时会处理单个文件,类似于GCF逻辑。使用“云任务”运行异步请求后台任务。
4。计算引擎和云任务:与App Engine相同,但具有固定的非自动可伸缩VM]
另一个令人困惑的地方是名称的概念。
因此,我对应该采取的解决方案感到困惑。有什么经验或建议吗?
[如果您仔细阅读这些内容,我想我实际上要问的是,如上所述,在App Engine上设置flask应用程序是否是该解决方案处理数据相关任务的预期用例之一。
所有解决方案各有优缺点。>>
数据流似乎很自然。
如果对这个用例很重要,那么另外一些考虑将是文件处理一次。除数据流以外的其他系统可能无法严格保证操作的幂等性。
我认为要求类似于
从PubSub读取文件名->加载文件->解析和转换文件->写入BQ
Dataflow也有一些模板,无需进行设置即可直接使用,但不幸的是,没有用于此确切用例的模板。
此外,由于这是一个长期运行的管道,因此Dataflow当然可以帮助维护和发展该管道。