关于比特币价格的 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