1

python 3.4 和 Coinbase V2 API


我正在进行一些 BTC 数据分析,并尝试向 coinbase API 发出持续请求。运行我的脚本时,它最终总是会在调用时崩溃

r = client.get_spot_price()
r = client.get_buy_price()
r = client.get_sell_price()

不同寻常的是,脚本总是会在不同的时间崩溃。有时它会成功收集一个小时左右的数据然后崩溃,有时它会在 5-10 分钟后崩溃。

错误

    r = client.get_spot_price()
  File "/home/g/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 191, in get_spot_price
    response = self._get('v2', 'prices', 'spot', data=params)
  File "/home/g/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 129, in _get
    return self._request('get', *args, **kwargs)
  File "/home/g/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 116, in _request
    return self._handle_response(response)
  File "/home/g/.local/lib/python3.4/site-packages/coinbase/wallet/client.py", line 125, in _handle_response
    raise build_api_error(response)
  File "/home/g/.local/lib/python3.4/site-packages/coinbase/wallet/error.py", line 49, in build_api_error
    blob = blob or response.json()
  File "/home/g/.local/lib/python3.4/site-packages/requests/models.py", line 812, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode
    raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)

由于某些 json 解码,它似乎崩溃了?

有谁知道为什么这只会在某些时候抛出错误?


我尝试了类似以下的方法以避免由于此错误而崩溃:

#snap is tuple of data containing data from buy, sell , spot price
if not any(snap):                                                                                                 
    print('\n\n-----ENTRY ERROR---- Snap returned None \n\n')                                                     
    success = False                                                                                               
    return 

但它没有起到作用

您认为处理此错误的一些好方法是什么?


谢谢,非常感谢任何帮助!

4

2 回答 2

1

对我来说,这可能与该问题有关https://github.com/coinbase/coinbase-python/issues/15。事实上,这似乎是一个内部库错误(因为代码确实raise build_api_error(response)证实了我的断言)。

也许问题与互联网连接有关?如果您的网络(或服务器出现故障),它可能无法检索 JSON 文件或检索空文件。但是,图书馆应该更清楚地通知你。

因此,它将尝试在 JSON 解码器中解码一个空文件,这是导致错误的原因。

一个临时的解决方法是用一个 try 语句来支撑你的代码,如果它失败了再试一次。

于 2016-06-05T21:05:37.340 回答
0

您必须为其提供货币才能获得价格。

这是一个例子:

price = client.get_spot_price(currency_pair='XRP-USD')

于 2020-09-24T00:50:09.307 回答