#python #django #performance #python-asyncio
Вопрос:
… более 2 секунд всего на 4 запроса данных к функции обмена и создания словаря.
если у кого-то есть какие-либо предложения, это было бы большой помощью.
async_tasks = []
async def sigBuy(count):
bot_dict = Bot.to_dict(activeBots[count])
sigSettings_dict = Bot.to_dict(activeBots[count].sigSettings)
# Binance API and Secret Keys
Bclient = Client(sigSettings_dict['API_key'], sigSettings_dict['API_secret_key'])
p = round(float(percentage(7, bot_dict['ct_balance']) / (float(bin_asset_price['price']) / 1)), 8)
# Round and Asign the asset_amount
asset_amount = round(p, 2)
# shouldILog = await makeBuy(market, asset_amount, Bclient, sigSettings_dict['base_currency'])
shouldILog = 2
if shouldILog == 2:
asset_amount = int(asset_amount)
last_trade = Bclient.get_all_orders(symbol=market sigSettings_dict['base_currency'])[-1]
print(last_trade)
asset_price = float(last_trade['cummulativeQuoteQty']) / float(last_trade['executedQty'])
buyInPrice = float(last_trade['cummulativeQuoteQty'])
for otrade in activeBots[count].opentrades.all():
trade = Bot.to_dict(otrade)
del trade['id']
otradesUpdate.append(trade)
openTrades_dict = {'bot_ID': bot_dict['id'], 'date': date, 'market': market, 'trade_mode': 'Buy', 'price': asset_price, 'amount': asset_amount, 'amount_in_base_currency': buyInPrice, 'result': 0}
otradesUpdate.append(openTrades_dict)
BotsUpdate.append(bot_dict)
SigSettingsUpdate.append(sigSettings_dict)
for count, bot in enumerate(activeBots):
async_tasks.append(loop.create_task(sigBuy(count)))
loop.run_until_complete(asyncio.gather(*async_tasks))
В activeBots всего 4 бота
Комментарии:
1. asyncio не ускорит ваш код сам по себе. Вам нужно использовать код с поддержкой asyncio и библиотеки, которые вернут управление циклу событий во время ожидания ввода
sigBuy
-вывода.Ничего не ожидает, и поэтому каждый вызов будет блокироваться до его завершения.