From b47d7b54cca8ff142eaadf38c8bb425bf11af2cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Sun, 25 Mar 2018 23:57:39 +0200 Subject: Handle invalid nonces --- portfolio.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'portfolio.py') diff --git a/portfolio.py b/portfolio.py index 9c58676..9dae23e 100644 --- a/portfolio.py +++ b/portfolio.py @@ -1,7 +1,7 @@ from datetime import datetime from retry import retry from decimal import Decimal as D, ROUND_DOWN -from ccxt import ExchangeError, InsufficientFunds, ExchangeNotAvailable, InvalidOrder, OrderNotCached, OrderNotFound, RequestTimeout +from ccxt import ExchangeError, InsufficientFunds, ExchangeNotAvailable, InvalidOrder, OrderNotCached, OrderNotFound, RequestTimeout, InvalidNonce class Computation: computations = { @@ -477,7 +477,7 @@ class Order: def finished(self): return self.status.startswith("closed") or self.status == "canceled" or self.status == "error" - @retry((InsufficientFunds, RetryException)) + @retry((InsufficientFunds, RetryException, InvalidNonce)) def run(self): self.tries += 1 symbol = "{}/{}".format(self.amount.currency, self.base_currency) @@ -496,6 +496,14 @@ class Order: self.status = "closed" self.mark_finished_order() return + except InvalidNonce as e: + if self.tries < 5: + self.market.report.log_error(action, message="Retrying after invalid nonce", exception=e) + raise e + else: + self.market.report.log_error(action, message="Giving up {} after invalid nonce".format(self), exception=e) + self.status = "error" + return except RequestTimeout as e: if not self.retrieve_order(): if self.tries < 5: -- cgit v1.2.3