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