【发布时间】:2017-10-13 01:38:55
【问题描述】:
所以我有一个 python 脚本,它不断地从 API 收集数据,然后定期(例如每分钟)将它们保存到一个 excel 文件中。为此,我有一个 24/7 运行代码的 VPS。由于我需要来自多个来源的数据并且它们需要以不同的频率更新,我的解决方案是为每种类型的数据创建一个单独的函数,然后在单独的线程中调用它们。
举个例子:
def ExchangeRateCheck(self):
while True:
try:
self.exchangeRate = self.oanda.get_prices(instruments="AUD_USD").get('prices')[0]['ask']
except:
try:
self.exchangeRate = requests.get('http://free.currencyconverterapi.com/api/v3/convert?q=AUD_USD').json()['results']['AUD_USD']['val']
except:
pass
time.sleep(30)
ratethread = threading.Thread(target=self.ExchangeRateCheck, args=())
ratethread.daemon = True
ratethread.start()
考虑到无法访问 API 的时间,所有内容都嵌套在 try/except 子句中。然而,我发现一些线程仍然会在某个时候因为某种未知原因退出。
我的问题是: 对于这种类型的任务是使用远程 VPS 并在一段时间内使用单独的函数 True 循环最好的解决方案?有没有更好的方法来 24/7 收集数据?我能否更好地处理异常以确保代码永不停止运行?
您可能会说我不是专业开发人员,因此非常感谢任何反馈,请随意对我努力,我不会被冒犯的。
【问题讨论】:
-
欢迎您。守护线程只是告诉解释器,如果主线程退出,就可以结束进程,而不是等待所有其他线程停止。
标签: python api vps python-multithreading data-science