def _log_order(self, order: Order): logging.info("[ORDER RESULT]:", order) if self.should_db_logging: SharedMongoClient.async_order_insert(order.to_dict())
def do_interval(self): # noinspection PyBroadException try: res_json = self.api.get_order_info(self.order.currency, self.order) if res_json is None: # it's impossible to know if a gopax order is cancelled or not # this behavior may need to be changed in accordance with the api changes if self.order.market is Market.GOPAX: # gopax api sucks, just consider it done (or cancelled) # see `get_order_info` method for detail self.order.updated_at = int(time.time()) self.order.filled_amount = self.order.order_amount self.order.remain_amount = 0 self.order.fee_rate = GopaxMarketManager().taker_fee self.order.fee = self.order.fee_rate * self.order.filled_amount self.order.status = OrderStatus.FILLED else: raise Exception( "Unexpected response: with `get_order_info`, returned None" ) else: self.order.update_from_api(res_json) except KorbitApi as e: # consider it cancelled if "Order id does not exist" in str(e): logging.info("Order<%s> in %s is cancelled." % (self.order.order_id, self.order.market.value)) self.order.status = OrderStatus.CANCELLED else: logging.warning(e) logging.warning( "get_order_info in OrderWatcher failed! (Order %s)" % self.order.order_id) except CoinoneError as e: # consider it cancelled if "Order id does not exist" in str(e): logging.info("Order<%s> in %s is cancelled." % (self.order.order_id, self.order.market.value)) self.order.status = OrderStatus.CANCELLED else: logging.warning(e) logging.warning( "get_order_info in OrderWatcher failed! (Order %s)" % self.order.order_id) except OkcoinError as e: # consider it cancelled if "Order id does not exist" in str(e): logging.info("Order<%s> in %s is cancelled." % (self.order.order_id, self.order.market.value)) self.order.status = OrderStatus.CANCELLED else: logging.warning(e) logging.warning( "get_order_info in OrderWatcher failed! (Order %s)" % self.order.order_id) except Exception as e: logging.warning(e) logging.warning( "get_order_info in OrderWatcher failed! (Order %s)" % self.order.order_id) finally: SharedMongoClient.async_order_insert(self.order.to_dict())