【问题标题】:API Coinbase ValueError from get_buy_price()来自 get_buy_price() 的 API Coinbase ValueError
【发布时间】:2016-10-04 22:27:19
【问题描述】:

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 

但它没有起到作用

您认为处理此错误有哪些好的方法?


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

【问题讨论】:

    标签: python json api coinbase-api


    【解决方案1】:

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

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

    所以,它会尝试在 JSON 解码器中解码一个空文件,导致错误的原因是什么。

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

    【讨论】:

    • 嗯,我希望情况并非如此。我想这是很现实的解释。您对如何处理错误有任何建议吗?我应该在我的 API 请求旁边处理它吗?现在我正在处理发出 api 请求的方法的返回值。这是我在上面发布的代码。感谢您的回答。
    • 我会用 try 语句包围整个代码 :) try: r = client.get_spot_price() r = client.get_buy_price() r = client.get_sell_price() catch ValueError v: skip
    【解决方案2】:

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

    这是一个例子:

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

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多