Ejemplo n.º 1
0
 async def gas_price_update_loop(self):
     while True:
         try:
             url = ETH_GASSTATION_API_URL.format(self.api_key)
             async with aiohttp.ClientSession() as client:
                 response = await client.get(url=url)
                 if response.status != 200:
                     raise IOError(f"Error fetching current gas prices. "
                                   f"HTTP status is {response.status}.")
                 resp_data: Dict[str, Any] = await response.json()
                 for key, value in resp_data.items():
                     if key in GasLevel.__members__:
                         self._gas_prices[GasLevel[key]] = Decimal(
                             str(value)) / Decimal("10")
                 prices_str = ', '.join([
                     k.name + ': ' + str(v)
                     for k, v in self._gas_prices.items()
                 ])
                 self.logger().info(f"Gas levels: [{prices_str}]")
                 for name, con_setting in CONNECTOR_SETTINGS.items():
                     if con_setting.use_eth_gas_lookup:
                         self._gas_limits[name] = get_gas_limit(name)
                         self.logger().info(
                             f"{name} Gas estimate:"
                             f" limit = {self._gas_limits[name]:.0f},"
                             f" price = {self.gas_level.name},"
                             f" estimated cost = {get_gas_price(False) * self._gas_limits[name]:.5f} ETH"
                         )
                 await asyncio.sleep(self.refresh_time)
         except asyncio.CancelledError:
             raise
         except Exception:
             self.logger().network("Unexpected error running logging task.",
                                   exc_info=True)
             await asyncio.sleep(self.refresh_time)
def fee_overrides_dict():
    all_dict = {}
    # all_connector_types = get_exchanges_and_derivatives()
    for name, setting in CONNECTOR_SETTINGS.items():
        key_suffix = None
        if setting.fee_type is TradeFeeType.Percent:
            key_suffix = "fee"
        elif setting.fee_type is TradeFeeType.FlatFee:
            key_suffix = "fee_amount"
        maker_key = f"{name}_maker_{key_suffix}"
        taker_key = f"{name}_taker_{key_suffix}"
        all_dict.update({maker_key: new_fee_config_var(maker_key)})
        all_dict.update({taker_key: new_fee_config_var(taker_key)})
    return all_dict