前提:我是一个完整的新手。因此,非常感谢任何温和的提示:)
因此,我启动了一个 EC2 实例并丢弃了我用 Python 构建的爬虫。我已经设置了 cronjobs 以按预定的时间间隔运行我的爬虫。每次运行时,我的爬虫都会将一组结果保存到相对的本地文件夹中,例如 ( db//db1.csv
、db//db2.csv
等)。比如说,这些 DB 文件的状态非常重要,因为它们随后被用作编译 API 调用和维护网站的源。
出于测试目的,我也想从本地机器上运行我的刮板。所以,我试图弄清楚,每当我在本地运行我的爬虫时,如何确保我拥有可以构建的数据库文件的最新状态——有效地编写一个函数来从我的 EC2 实例下载最新的数据库文件.
我一直scp -i
在我的控制台中试验参数cmd
,这很好,因为我能够检索我的文件。但是,我在 Python 中使用os
or包装这些命令时遇到了麻烦subprocess
,要么直接运行命令,要么使用这些命令运行批处理文件。
似乎 Python 被锁定在我的虚拟环境中,ssh.exe
在我的C:/windows/system32/OpenSSH
. 我无法解决这个问题,因此从 StackOverflow 线程中意识到,大多数用户使用该paramiko
库直接通过 SSH 连接到他们的 EC2 实例。
现在,我觉得我的工作流程过于复杂,不得不通过 SSH 下载文件以保持远程和本地主机之间的状态对齐。我希望将我的所有数据库迁移到 AWS RDS 上的 PostgreSQL 并以这种方式管理所有内容。我很想听听想法(基于任何假设),以及未来最好的架构是什么,以便:
- 我可以从远程主机运行我的爬虫,并使用 cronjob 安排它的运行,自动将新数据广播到网站
- 而且,在本地处理新的代码版本,而不会破坏我的远程数据库状态
我错过了什么?我对解决这个问题的想法比实际代码更感兴趣。谢谢!
将其拆分为两个独立的任务:
为了保持文件同步,我会使用Syncthing——我用它在我的笔记本电脑和 EC2 之间同步文件作为备份。它一直在运行,只要它可以连接,它就会进行同步。适用于 Linux、Windows、Mac。
希望有帮助:)