将 Python3 项目迁移到 AWS

Posted

技术标签:

【中文标题】将 Python3 项目迁移到 AWS【英文标题】:Migrate Python3 project into AWS 【发布时间】:2022-01-01 13:02:35 【问题描述】:

我一直在研究如何将我的 python3 项目迁移到 AWS,但我找不到解决方案。我的python3项目很简单:

daemon.py -> 这是一个无限的 while True 循环。它对 API 进行 GET 请求。每秒发出尽可能多的请求非常重要。然后它将它存储到mysql db中。请求总是一样的,GET /api/check_stock。

while True:
  r = requests.post(url,json=body, proxies=proxy_dict)
  r_json = json.loads(r.content)
  insert_db(r_json)

ship.py -> 另一个在 mysql 中寻找变化的 while True 循环,当检测到变化时向 API 发送 GET 请求。

我发现了 lambda,但我不确定在其上运行无限循环是否是个好主意,因为我知道他们会按执行时间向您收费......这是无限循环。

提前致谢。

【问题讨论】:

一个 ec2 实例肯定可以运行这个无限循环......但这些看起来很奇怪 该代码执行 POST 请求,而不是 GET 请求。如果你不想处理管理服务器,我会看 ECS fargate。 【参考方案1】:

它是否对您有效仅取决于您对每次下载的重视程度,而我们没有足够的信息来知道答案。

还有一个问题是您是要一直运行它,还是在特定时间运行特定持续时间。在第一种情况下,fargate 或 ec2 可能是更好的候选者,在第二种情况下,这取决于您运行该进程的时间。

虽然使用当前系统,但您可以改进一些事情 - 您似乎在等待每个响应,这意味着大量空闲时间。您可以使用异步或线程池方法提高吞吐量。 (除非它真的只是列出所有项目的单个端点)

另一个问题是,如果状态不经常更改,则不一定需要将ship.py 作为监视循环运行。如果您已经在 AWS 中,则可以改为将通知作为 SQS 消息进行,这会将 ship.py 进程作为 lambda 触发 - 这实际上可能会为您节省一些资源。

【讨论】:

感谢您的回答。 POST 答案是一个 json,我需要尽快检测到更改(因此每秒执行许多 POST 请求)。这必须全天候 24x7 运行。关于 ship.py 和 lambda,谢谢。我已经意识到这一点,我可能会这样做。目前我更想发现如何迁移 daemon.py,因为这是关键。【参考方案2】:

好的,发现最好的方法是在 EC2 中使用 Aurora 运行守护程序,并尝试像 viraptor 所说的那样迁移 ship.py。

【讨论】:

【参考方案3】:

如果您确实使用了 lambda 无服务器 python 项目,您将按照您的意愿去做,但您的费用会非常高。

这里是文档:AWS-Lambda-Python

还可以使用SQS 将数据从脚本推送到数据库。

【讨论】:

以上是关于将 Python3 项目迁移到 AWS的主要内容,如果未能解决你的问题,请参考以下文章

Python离线项目迁移部署

python2x如何迁移代码到python3中

django项目部署上线

将数据从postgres迁移/复制到vertica

将使用 pip 安装的站点包/模块从较旧版本的 python 迁移到较新/最新版本的 python

将Java项目从maven迁移到gradle