关于比特币价格的 API 循环问题
Loop issue with an API about Bitcoin price
我使用 API 更新比特币价格。
下面的代码给了我很多信息:
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'CURRENCY_EXCHANGE_RATE',
'from_currency': 'BTC',
'to_currency': 'EUR',
'apikey': AV_API_KEY
})
resp
resp.json()
输出:
{'Realtime Currency Exchange Rate': {'1. From_Currency Code': 'BTC',
'2. From_Currency Name': 'Bitcoin',
'3. To_Currency Code': 'EUR',
'4. To_Currency Name': 'Euro',
'5. Exchange Rate': '16006.64235500',
'6. Last Refreshed': '2020-11-30 14:12:04',
'7. Time Zone': 'UTC',
'8. Bid Price': '16006.64235500',
'9. Ask Price': '16006.65069000'}}
我只想知道 5. 汇率并每 10 秒更新一次价格,所以我尝试了这个:
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'CURRENCY_EXCHANGE_RATE',
'from_currency': 'BTC',
'to_currency': 'EUR',
'apikey': AV_API_KEY
})
resp
resp.json()
a=resp.json()
def update_price_10sec():
print(a.get('Realtime Currency Exchange Rate').get('5. Exchange Rate'))
while True:
update_price_10sec()
time.sleep(10) #make function to sleep for 10 seconds
然后输出是:
16006.64235500
16006.64235500
16006.64235500
16006.64235500
16006.64235500
(etc...)
所以问题是价格不再更新,每隔 10 秒我就会复制粘贴最后一个已知价格。有人知道我该如何解决吗?
您应该将 API 调用移动到 update_price_10sec
函数中。这将再次调用它并确保您有最新的价格。
def update_price_10sec():
# Your API call
print(a.get('Realtime Currency Exchange Rate').get('5. Exchange Rate'))
如果您不在函数中调用 API,它只会继续提供与第一次调用时相同的数据。
看来您需要将请求放在 while 循环中。
def GET():
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'CURRENCY_EXCHANGE_RATE',
'from_currency': 'BTC',
'to_currency': 'EUR',
'apikey': AV_API_KEY
})
return resp.json()
def update_price_10sec(a):
print(a.get('Realtime Currency Exchange Rate').get('5. Exchange Rate'))
while True:
update_price_10sec(GET())
time.sleep(10) #make function to sleep for 10 seconds
我使用 API 更新比特币价格。
下面的代码给了我很多信息:
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'CURRENCY_EXCHANGE_RATE',
'from_currency': 'BTC',
'to_currency': 'EUR',
'apikey': AV_API_KEY
})
resp
resp.json()
输出:
{'Realtime Currency Exchange Rate': {'1. From_Currency Code': 'BTC',
'2. From_Currency Name': 'Bitcoin',
'3. To_Currency Code': 'EUR',
'4. To_Currency Name': 'Euro',
'5. Exchange Rate': '16006.64235500',
'6. Last Refreshed': '2020-11-30 14:12:04',
'7. Time Zone': 'UTC',
'8. Bid Price': '16006.64235500',
'9. Ask Price': '16006.65069000'}}
我只想知道 5. 汇率并每 10 秒更新一次价格,所以我尝试了这个:
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'CURRENCY_EXCHANGE_RATE',
'from_currency': 'BTC',
'to_currency': 'EUR',
'apikey': AV_API_KEY
})
resp
resp.json()
a=resp.json()
def update_price_10sec():
print(a.get('Realtime Currency Exchange Rate').get('5. Exchange Rate'))
while True:
update_price_10sec()
time.sleep(10) #make function to sleep for 10 seconds
然后输出是:
16006.64235500
16006.64235500
16006.64235500
16006.64235500
16006.64235500
(etc...)
所以问题是价格不再更新,每隔 10 秒我就会复制粘贴最后一个已知价格。有人知道我该如何解决吗?
您应该将 API 调用移动到 update_price_10sec
函数中。这将再次调用它并确保您有最新的价格。
def update_price_10sec():
# Your API call
print(a.get('Realtime Currency Exchange Rate').get('5. Exchange Rate'))
如果您不在函数中调用 API,它只会继续提供与第一次调用时相同的数据。
看来您需要将请求放在 while 循环中。
def GET():
resp = requests.get('https://www.alphavantage.co/query', params={
'function': 'CURRENCY_EXCHANGE_RATE',
'from_currency': 'BTC',
'to_currency': 'EUR',
'apikey': AV_API_KEY
})
return resp.json()
def update_price_10sec(a):
print(a.get('Realtime Currency Exchange Rate').get('5. Exchange Rate'))
while True:
update_price_10sec(GET())
time.sleep(10) #make function to sleep for 10 seconds