]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - ccxt_wrapper.py
Add logging at market instance creation
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / ccxt_wrapper.py
index c500659ae99ce82ed85587b7d9b15579cc178c1d..260d49dccbe2a2221b79fe8c36be70d940a24ab3 100644 (file)
@@ -21,7 +21,7 @@ class poloniexE(poloniex):
         Wrapped to allow retry of non-posting requests"
         """
 
-        origin_request = super(poloniexE, self).request
+        origin_request = super().request
         kwargs = {
                 "api": api,
                 "method": method,
@@ -33,10 +33,25 @@ class poloniexE(poloniex):
         retriable = any(re.match(call, path) for call in self.RETRIABLE_CALLS)
         if api == "public" or method == "GET" or retriable:
             return retry_call(origin_request, fargs=[path], fkwargs=kwargs,
-                    tries=10, delay=1, exceptions=(RequestTimeout,))
+                    tries=10, delay=1, exceptions=(RequestTimeout, InvalidNonce))
         else:
             return origin_request(path, **kwargs)
 
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+
+        # For requests logging
+        self.session.origin_request = self.session.request
+        self.session._parent = self
+
+        def request_wrap(self, *args, **kwargs):
+            r = self.origin_request(*args, **kwargs)
+            self._parent._market.report.log_http_request(args[0],
+                    args[1], kwargs["data"], kwargs["headers"], r)
+            return r
+        self.session.request = request_wrap.__get__(self.session,
+                self.session.__class__)
+
     @staticmethod
     def nanoseconds():
         return int(time.time() * 1000000000)
@@ -208,7 +223,7 @@ class poloniexE(poloniex):
         return all_balances
 
     def create_exchange_order(self, symbol, type, side, amount, price=None, params={}):
-        return super(poloniexE, self).create_order(symbol, type, side, amount, price=price, params=params)
+        return super().create_order(symbol, type, side, amount, price=price, params=params)
 
     def create_margin_order(self, symbol, type, side, amount, price=None, lending_rate=None, params={}):
         if type == 'market':