【发布时间】:2021-07-24 22:28:27
【问题描述】:
我在 github 上将 venv 用于我的 python 存储库,并希望在 10 多个 ec2 实例上运行相同的代码(每个实例将有一个 cronjob,它只是在相同的时间表上运行相同的代码)
关于如何最好地实现这一点的任何建议 + 继续确保所有实例都在 github 上获得最新版本的分支?我想尝试自动化我需要做的任何配置,所以我不会这样做:
-
创建一个ec2实例,设置我需要的所有配置,比如下载最新的python版本等。然后git clone,使用venv设置我需要的所有python包。验证代码在此实例上有效。
-
对剩余的 10 多个 ec2 实例重复此操作
-
每当有人发布一个新的 master 分支时,我必须 ssh 进入每个 ec2 实例,git pull 到正确的分支,重新更新我需要的任何新配置,对所有剩余的 10 多个 ec2 实例重复此操作。
理想情况下,我可以只运行一些脚本来推送使代码在所有 ec2 实例上运行所需的一切。我对这类事情几乎没有经验,但通过阅读这是我正在考虑的一种方法。我在正确的轨道上吗?:
- 创建一个脚本,我运行 ssh 到我的所有 ec2 实例和 git clone/update 以更正分支
- 使用 Docker 确保正确设置所有 ec2 实例,以便 python 代码正常工作(这是 Docker 的正确用例吗?)。上面的脚本将运行必要的 Docker 命令
- 与使用 venv 并读取 requirements.txt 文件类似,因此所有 ec2 实例都有正确的 python 包和版本
【问题讨论】:
-
您多久更改一次 ec2 实例的数量?代码多久运行一次?代码多久更改一次?
-
啊,好点子,这个用例是一个在 10 多台机器上运行的爬虫,所以来自用户的外部流量不会是一个因素。它会尽可能多地运行,尽管实际上可能每天运行 10-20 小时。 ec2实例的数量暂时不会改变,可以认为是固定的。不需要自动缩放,因为决定何时添加/删除实例以完成更多/更少的抓取将是手动调用。同样没有问题的是,启动并运行新实例最多需要几个小时。代码每周更改 2-3 次。
标签: python amazon-web-services docker amazon-ec2 python-venv