2016-06-05 9 views
1

Python 3.4 und Coinbase V2 APIAPI Coinbase Valueerror aus get_buy_price()


ich auf einige BTC Datenanalyse am arbeiten und versuchen, kontinuierliche Anfragen zu machen API coinbase. Wenn mein Skript ausgeführt wird, wird es immer schließlich auf einem Anrufe zum Absturz zu

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

Das ungewöhnliche daran ist, dass das Skript zu verschiedenen Zeiten immer abstürzen. Manchmal sammelt es erfolgreich Daten für eine Stunde oder so und stürzt dann ab, andere Male wird es nach 5 bis 10 Minuten abstürzen.

ERROR:

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) 

Es scheint aufgrund einiger json Decodierung Absturz zu werden?

Hat jemand eine Idee, warum das nur zu bestimmten Zeiten Fehler sendet?


ich etwas wie das folgende versucht haben zu vermeiden, aufgrund dieses Fehlers abstürzt:

#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 

aber es ist nicht tut den Trick

Was einige gute Möglichkeiten, um diesen Fehler zu handhaben Ihrer Meinung nach?


Danke, jede Hilfe wird sehr geschätzt!

Antwort

1

Für mich könnte es etwas mit dieser Frage verbunden sein https://github.com/coinbase/coinbase-python/issues/15. Es scheint in der Tat eine interne Bibliothek Fehler (wie der Code tut raise build_api_error(response) was bestätigt meine Behauptungen).

Vielleicht ist es möglich, dass das Problem mit einer Internetverbindung verbunden ist? Wenn das Netzwerk (oder der Server) fehlschlägt, kann die JSON-Datei entweder nicht abgerufen werden oder eine leere Datei kann abgerufen werden. Aber die Bibliothek sollte Sie deutlicher informieren.

So wird es versuchen, eine leere Datei im JSON-Decoder zu dekodieren, was den Fehler verursacht.

Eine vorübergehende Problemumgehung wäre, Ihren Code mit einer try-Anweisung zu verbinden und es erneut zu versuchen, falls es fehlschlägt.

+0

Hmm, ich hatte gehofft, dass das nicht der Fall war. Ziemlich realistische Erklärung, nehme ich an. Haben Sie Empfehlungen zum Umgang mit dem Fehler? Soll ich es direkt neben meinen API Anfragen bearbeiten? Im Moment behandle ich den Rückgabewert der Methode, in der die API-Anfragen gestellt werden. Dies ist der Code, den ich oben gepostet habe. Danke für die Antwort. – Lamar

+0

Ich würde umgeben nur den gesamten Code mit einer 'try' Anweisung :) ' versuchen: r = client.get_spot_price() r = client.get_buy_price() r = client.get_sell_price() catch v Valueerror: skip' –

+0

Danke, das schien den Trick zu machen! – Lamar