2014-06-18 5 views
0

Un script python était en cours d'exécution et maintenant il ne l'est pas.Python bitstamp api invalide nonce erreur

   public_client = bitstamp.client.Public() 

       data=backTestBitCoin.getHistoricalPrices(); 

       trading_client = bitstamp.client.Trading(username='AAA', key='BBB', secret='CCC') 
       tick=trading_client.ticker(); 

       lastBid = float(tick['bid']); 
       lastAsk = float(tick['ask']); 
       balances = trading_client.account_balance(); #error thrown from this line 

Je reçois l'erreur suivante:

    return self._post("balance/", return_json=True) 
        File "/Library/Python/2.7/site-packages/bitstamp/client.py", line 47, in _post 
        return self._request(requests.post, *args, **kwargs) 
        File "/Library/Python/2.7/site-packages/bitstamp/client.py", line 80, in _request 
        raise BitstampError(error) 
       bitstamp.client.BitstampError: Invalid nonce 

Quelqu'un at-il jamais vécu cela? Pas si familier avec la bibliothèque donc pas sûr de ce qui le provoque.

Répondre

1

La génération d'une nouvelle clé API/secret a résolu ce problème. Je crois qu'il a été causé par l'utilisation d'un mélange de l'API php et l'api python ou l'application iPhone Bitstamp. Je confirme ce soupçon, mais la solution globale était de le débrancher et rebranchez-


solution abrégée. Mon problème venait d'utiliser les suivantes bibliothèques PHP et Python,

php python

Les deux sont A + grands et faciles à utiliser.

L'erreur est créée en raison de la divergence suivante dans leurs méthodes de création du nonce (ni plus "juste" à mon avis, juste différent).

php:

   // generate a nonce as microtime, with as-string handling to avoid problems with 32bits systems 
       $mt = explode(' ', microtime()); 
       $req['nonce'] = $mt[1] . substr($mt[0], 2, 6); 
       $req['key'] = $key; 
       $req['signature'] = $this->get_signature($req['nonce']); 

python:

   self._nonce = max(int(time.time()), nonce) 

time.time() vous donne: 1.403.366.728,072785 et microtime() vous donne: 1403366859731819.

La solution que je mets en place est de changez le code python en:

self._nonce = max(int(time.time()*1000000), nonce) et l'erreur est résolue.

Questions connexes