我正在研究一个学习Python,SQL,Javascript和运行服务器的项目 - 基本上掌握了整个堆栈。现在我的基本目标是这样的:连接到数据库时运行无限的Python脚本
我想无限地运行一个Python脚本,它不断地对不同的服务进行API调用,这些服务有不同的速率限制(例如200 /小时,1000 /小时等)和将结果(ints)存储在数据库(PostgreSQL)中。我想在一段时间内存储这些结果,然后开始使用这些数据在前端显示有趣的内容。我需要这个24/7运行。我试图了解这里的一般建筑,并且四处搜寻已经证明了令人惊讶的困难。我在粗糙的伪代码基本思路是这样的:
database.connect()
def function1(serviceA):
while(True):
result = makeAPIcallA()
INSERT INTO tableA result;
if(hitRateLimitA):
sleep(limitTimeA)
def function2(serviceB):
//same thing, different limits, etc.
而且我ssh到我的服务器,运行python myScript.py &
,关闭我的笔记本电脑了,并等待数据滚入这里是我的问题:
- 这种方法是否有意义,还是应该做一些完全不同的事情?
- 无限期地打开数据库连接被认为是“坏”还是危险?如果是这样,我还要如何管理数据库?
- 我考虑使用调度程序,如
cron
,但速率限制是可变的。我无法每小时运行剧本,当我的极限被击中时,说明5分钟到开始时间并且等待60分钟之后。即使以微小的时间间隔运行它似乎也很麻烦:我需要休息以保持持续不变的限速等待时间。我是否正确地假设一个调度程序不是要去这里的路? - 我如何优雅地处理任何意外的潜在致命错误(即记录和重新启动)?手动杀死脚本或编辑脚本怎么办?
我很感兴趣学习不同的方法和最佳实践 - 任何和所有的建议将非常感谢!