python - 基于触发器并发运行python脚本
问题描述
用 Python 解决以下问题的最佳方法是什么?
我有实时数据流从用户应用程序进入我的面向对象存储(json 文件存储到亚马逊的 S3 存储中)。
收到每个 JSON 文件后,我必须在一定时间内(在本例中为 1 秒)处理文件中的数据并生成发送回用户的响应。此数据由简单的 Python 脚本处理。
我的问题是,实时数据流可以同时从我需要通过我的 Python 脚本运行的用户应用程序生成数百个 JSON 文件,我不知道如何以最佳方式处理这个问题。
我知道,解决这个问题的方法是使用基于触发器的 Lambda,一旦从无服务器环境中的实时流上传,它将在每个文件的顶部执行作业,但是与具有单个服务器实例相比,此选项非常昂贵运行并以某种方式触发内部的工作。
任何建议表示赞赏。谢谢。
解决方案
无服务器实际上比使用服务器便宜。当有一段时间没有活动时,它会便宜得多,因为您不需要为无所事事的服务器付费。
您的要求中最难的部分是将响应发送回用户。如果将对象上传到 S3,则没有简单的方法可以发回响应,甚至不清楚是谁发送文件的用户。
您可以处理传入的文件,然后将响应存储回一个名称相似的对象中,然后客户端可以轮询 S3 以获取响应。这要求上传使用以某种方式生成的唯一名称。
另一种方法是将数据发送到AWS API Gateway,这可以触发 AWS Lambda 函数,然后直接将响应返回给请求者。无需服务器,自动扩展。
如果您想使用server,那么您需要一种方法让客户端通过对 S3 中的 JSON 对象(或数据本身)的引用向服务器发送消息。服务器需要运行一个可以接收请求、执行工作并返回响应的 Web 服务器。
底线:首先考虑数据流,而不是处理。
推荐阅读
- oracle - 调度程序作业卡在正在运行的 oracle 上
- excel - 如何使 countifs 和 sumifs 作为“OR”而不是“AND”运行
- sql - PostgreSQL 无法插入
- assembly - 如何更改 ASM 中的变量,我所做的似乎无济于事?
- python - AttributeError: int 对象没有添加属性。在将预测保存到json格式文件夹的功能中
- caching - Nextjs 中的条件增量构建
- asp.net-core-webapi - .NET Core 3.1、EF Core 3.1 DB 第一种方法,身份
- python - 将字典列表中的数字添加到另一个字典列表
- sql - hasrsine 公式的 min(),将结果缩小到 1 个最接近的匹配以进行 sql 更新
- ruby - 红宝石不等于运算符不起作用但等于