在我的python代码中,我请求股票报价,它为我提供了100个报价。最后,我在一个连续的循环中发出了一个新的请求,但是,这些值与之前相同。当我停止程序并再次运行它时,它们能够改变,当我在循环中发出新的请求时,我希望它这样做。下面是代码。我添加了一条print语句来标记代码循环的位置。
import socket
import requests
import json
import os
import time
url = "https://alpha-vantage.p.rapidapi.com/query"
querystring = {"interval":"5min","function":"TIME_SERIES_INTRADAY","symbol":"MSFT","datatype":"json","output_size":"compact"}
headers = {
'x-rapidapi-key': "use your own api key",
'x-rapidapi-host': "alpha-vantage.p.rapidapi.com",
'Cache-Control': "no-cache"
}
while True:
response = requests.request("GET", url, headers=headers, params=querystring)
result = response.json()
if "Time Series (5min)" in result:
print("beginning")
values = result['Time Series (5min)']
days = values.keys()
v = []
for i in days:
#v.append(float(values[i]['2. high']))
print(values[i]['2. high'])
time.sleep(1)
else:
print("error, no data")
time.sleep(5)发布于 2021-07-24 07:16:34
如果你阅读API,它会说:
默认情况下,
为outputsize=compact。字符串compact和full可以使用以下规范: compact只返回最新的100个数据点;full返回20+年历史数据的完整时间序列。如果您想要减少每个API调用的数据大小,建议使用"compact“选项。
所以,这个呼叫似乎不能被寻呼。总是只返回最后100个。使用for output_size full获取全部(根据interval请求的粒度,可能会很大)。当您等待一段时间后,很明显,最后100个值将发生更改,但在几秒钟内,API可能仍会返回最后的数据,因为没有更新,因为您只休眠了5毫秒,而不是分钟。
https://stackoverflow.com/questions/68505584
复制相似问题